• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Go使用protobuf

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

WIN7 + Go1.9.2+protobuf3.5.1

  

1.首先定义一个用于测试的proto文件test.proto,内容如下:

    syntax = "proto3";
    package example;
        
    message Test {
      string strTest = 1;
      double dTest = 2;
      repeated int64 i64RepsTest = 3;
    }

 

2.需要下载两个exe来生成对应的go文件

https://github.com/google/protobuf/releases下载protoc-3.5.1-win32.zip文件,解压得到protoc.exe

②使用go get github.com/golang/protobuf/protoc-gen-go下载生成go格式代码的插件(默认会下载到GOPATH/bin中,而GOPATH/bin默认是c:/Users/Administrator/go/bin),得到protoc-gen-go.exe

③将protoc.exe、protoc-gen-go.exe和test.proto拷贝到同一个文件夹中

protoc.exe --go_out=. test.proto,生成对应的go代码文件test.pb.go

 

3.下面使用代码

①使用go get github.com/golang/protobuf/proto安装protobuf库

②将生成的test.pb.go拷贝到项目中(这里必须注意,因为使用了package example,所以必须在项目中新建example文件夹再拷贝进去)

③在项目中使用protobuf库,以及引入Test

import (
    "github.com/golang/protobuf/proto"
    "../example" //这里根据项目结构决定example的位置
)

 

④测试代码(在这里测试了中文字符串,double数据以及int64的数据)

        marshalTest := &example.Test{
            *proto.String("test_string中文test"),
            *proto.Float64(2.34),
            []int64{123456789123, 4, 5}}

        data, err := proto.Marshal(marshalTest)
        if err != nil {
            fmt.Println("proto.Marshal err : ", err)
        }

        unmarshalTest := &example.Test{}
        err = proto.Unmarshal(data, unmarshalTest)

        if err != nil {
            fmt.Println("proto.Unmarshal err : ", err)
        }

        fmt.Println("strTest = ", unmarshalTest.GetStrTest())
        fmt.Println("doubleTest = ", unmarshalTest.GetDTest())
        for _, v := range unmarshalTest.GetI64RepsTest() {
            fmt.Println("int64 reps = ", v)
        }

输出的结果

以上。

 

参考博文:《golang使用protobuf》

 

PS:protobuf相关

cocos2dx 3.x 集成protobuf


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
go语言基础之递归函数的调用流程发布时间:2022-07-10
下一篇:
在Go语言里检测内存泄漏发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap