標籤:Go protobuf 安裝
先去官網下載protobuf的源碼
https://github.com/google/protobuf/releases
可以先下載本地,然後上傳到虛擬機器中
我選擇的是Source code(tar.gz)
安裝依賴包(如果缺少包,可能會報錯)
yum install -y gcc gcc-c++ autoconf automake libtool curl make g++ unzip
解壓後,進入protobuf-3.5.1目錄中,運行
./autogen.sh命令
執行./configure命令
make && make install
檢測protobuf是否安裝成功?
protoc -h
由於要使用Go語言,因此,需要安裝相應的外掛程式
先去官網將外掛程式源碼下載到本地:
https://github.com/golang/protobuf/releases
上傳到虛擬機器,進行解壓
tar -zxvf protobuf-1.1.0.tar.gz
重新命名
mv protobuf-1.1.0.tar.gz protobuf
查詢GOROOT的值是什麼,如我的是:
echo $GOROOT
/usr/local/gohome/go
在GOROOT目錄下,建立下面的目錄src/github.com/golang
mkdir -p /usr/local/gohome/go/src/github.com/golang
將protobuf目錄移動到$GOROOT/src/github.com/golang 目錄下
進入$GOROOT/src/github.com/golang/protobuf
make install
舉例:
先手動建立一個檔案test.proto
//指定版本//注意proto3與proto2的寫法有些不同syntax = "proto3"; //包名,通過protoc產生時go檔案時package test;//手機類型//枚舉類型第一個欄位必須為0enum PhoneType { HOME = 0; WORK = 1; } //手機 message Phone { PhoneType type = 1; string number = 2; } //人 message Person { //後面的數字表示標識號 int32 id = 1; string name = 2; //repeated表示可重複 //可以有多個手機 repeated Phone phones = 3; } //聯絡簿 message ContactBook { repeated Person persons = 1; }
執行下面的命令,產生相應的代碼檔案
protoc --go_out=. *.proto
或者
protoc --go_out=. test.proto
Go語言中,如何使用呢?
1、首先建立test包,然後將產生的test.pb.go 上傳到test包下
2、編寫測試案例
內容如下:
package mainimport ( "fmt" "github.com/golang/protobuf/proto" "io/ioutil" "os" "xingej-go/xingej-go/xingej-go666/protobuf/test")func write() { p1 := &test.Person{ Id: 1, Name: "spark", } book := &test.ContactBook{} book.Persons = append(book.Persons, p1) //編碼資料 data, _ := proto.Marshal(book) //將資料寫入檔案 ioutil.WriteFile("./pb_test.txt", data, os.ModePerm)}func read() { data, _ := ioutil.ReadFile("./pb_test.txt") book := &test.ContactBook{} //解碼資料 proto.Unmarshal(data, book) for _, v := range book.Persons { fmt.Println(v.Id, v.Name) }}func main() { write() read()}
本文測試範例,參考了下面的文章:
https://www.cnblogs.com/jkko123/p/7161843.html
基於Go語言的protobuf 安裝 以及簡單測試案例