golang 使用 protobuf 的教程

2021-10-07 11:14:32 字數 1429 閱讀 6475

2、獲取protobuf的編譯器外掛程式protoc-gen-go

進入gopath目錄

執行

go get -u github.com/golang/protobuf/protoc-gen-go
如果成功,會在gopath/bin下生成protoc-gen-go.exe檔案

3、獲取protobuf的執行庫google.golang.org/protobuf(可以在github找相應的映象),這個包大約長這個樣子。很多教程上面都沒有提到這個包,導致編譯出來的程式並不能執行

4、建立乙個test.proto檔案

//指定版本

//注意proto3與proto2的寫法有些不同

syntax = "proto3";

//包名,通過protoc生成時go檔案時

package test;

//手機型別

//列舉型別第乙個字段必須為0

enum phonetype

//手機

message phone

//人message person

//聯絡簿

message contactbook

5、執行如下命令

protoc --go_out=. *.proto
會生成乙個test.pb.go的檔案,具體的檔案內容我就不截圖了。

6、在go語言中使用protobuf

} //建立位址簿

book := &test.contactbook{}

//編碼資料

data, _ := proto.marshal(book)

//把資料寫入檔案

ioutil.writefile("./test.txt", data, os.modeperm)

}func read()

//解碼資料

Mac下Go安裝配置並使用Protobuf

首先使用home brew安裝protobuf brew install protobuf 安裝好之後,檢視是否安裝成功 protoc version 如果成功會有如下類似的版本號顯示 libprotoc 3.1.0 這表明我安裝成功,並且版本號是3.1.0。接著安裝protobuf的golang外...

Golang 在Golang中使用json

由於要開發乙個小型的web應用,而web應用大部分都會使用json作為資料傳輸的格式,所以有了這篇文章。包引用import 用於存放資料的結構體type mydata struct這裡需要注意的就是後面單引號中的內容。json item 這個的作用,就是name欄位在從結構體例項編碼到json資料格...

golang 單向管道使用

一直聽說 即注釋的概念,但是一直沒有乙個具體的概念,看到golang中通過單向chan的來做 即注釋的例子 對於單向channel我們可以這樣定義 在os signal 中使用了如下定義notify函式只會對該通道傳送元素值,而不會從該通道接收值。func notify c chan os.sign...