golang——win10环境protobuf的使用
Posted dzhy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了golang——win10环境protobuf的使用相关的知识,希望对你有一定的参考价值。
1、protobuf配置
(1)https://github.com/protocolbuffers/protobuf/releases
(2)选择适合的版本:protoc-3.8.0-win64.zip
(3)解压后将文件 protoc.exe 所在目录添加到环境变量 Path
(4)检查protobuf版本,CMD命令窗口执行:protoc --version
2、proto文件处理
(1)获取相关库
go get -u github.com/golang/protobuf/protoc-gen-go
(2)编写test.proto文件
//指定版本 syntax = "proto3"; //包名 package pb; //课程 message Course int32 id = 1; string name = 2; //学生 message Student int32 id = 1; string name = 2; repeated Course courses = 3;
(3)生成文件命令:protoc --go_out=. test.proto
命令执行完,会在test.proto同级目录下生成test.pb.go文件
3、使用
package main import ( "fmt" "log" "test/protobuf/pb" "github.com/golang/protobuf/proto" ) func main() course1 := pb.Course Id: *proto.Int32(1), Name: *proto.String("Golang"), course2 := pb.Course Id: *proto.Int32(2), Name: *proto.String("Python3"), stu := pb.Student Id: *proto.Int32(1), Name: *proto.String("笃志弘毅"), Courses: []*pb.Course&course1, &course2, //序列化 data, err := proto.Marshal(&stu) if err != nil log.Fatalln("proto.Marshal err:", err) fmt.Println(data) //反序列化 var stuNew pb.Student err = proto.Unmarshal(data, &stuNew) if err != nil log.Fatalln("proto.Unmarshal err:", err) fmt.Println(stuNew) // 输出 // [8 1 18 12 231 172 131 229 191 151 229 188 152 230 175 133 26 10 8 1 18 6 71 111 108 97 110 103 26 11 8 2 18 7 80 121 116 104 111 110 51] // 1 笃志弘毅 [id:1 name:"Golang" id:2 name:"Python3" ] [] 0
以上是关于golang——win10环境protobuf的使用的主要内容,如果未能解决你的问题,请参考以下文章