基於Go語言的protobuf 安裝 以及簡單測試案例

來源:互聯網
上載者:User

標籤: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語言,因此,需要安裝相應的外掛程式

     

    1. 先去官網將外掛程式源碼下載到本地:

          https://github.com/golang/protobuf/releases

         

         上傳到虛擬機器,進行解壓

          tar -zxvf protobuf-1.1.0.tar.gz

    1.  

    2. 重新命名

    3. mv  protobuf-1.1.0.tar.gz  protobuf

    4.  

    1. 查詢GOROOT的值是什麼,如我的是:

      echo $GOROOT   

      /usr/local/gohome/go

       

    2. 在GOROOT目錄下,建立下面的目錄src/github.com/golang

      mkdir -p /usr/local/gohome/go/src/github.com/golang

       

    3. 將protobuf目錄移動到$GOROOT/src/github.com/golang 目錄下  

       

    4. 進入$GOROOT/src/github.com/golang/protobuf

       

    5. 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

     

     

     

     

     

     

     

    1.  

     

     

     

     


    基於Go語言的protobuf 安裝 以及簡單測試案例

    相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.