上海做无创DNA医院网站,广州南沙建设交通网站,app开发用什么软件,企业网站建设太原网站建设1、下载protobuf的编译器protoc地址#xff1a;window#xff1a;下载: protoc-3.3.0-win32.zip解压#xff0c;把bin目录下的protoc.exe复制到GOPATH/bin下#xff0c;GOPATH/bin加入环境变量。当然也可放在其他目录#xff0c;需加入环境变量#xff0c;能让系统找到pr…1、下载protobuf的编译器protoc地址window下载: protoc-3.3.0-win32.zip解压把bin目录下的protoc.exe复制到GOPATH/bin下GOPATH/bin加入环境变量。当然也可放在其他目录需加入环境变量能让系统找到protoc.exelinux下载protoc-3.3.0-linux-x86_64.zip 或 protoc-3.3.0-linux-x86_32.zip解压把bin目录下的protoc复制到GOPATH/bin下GOPATH/bin加入环境变量。如果喜欢编译安装的也可下载源码自行安装最后将可执行文件加入环境变量。2、获取protobuf的编译器插件protoc-gen-go进入GOPATH目录运行go get -u github.com/golang/protobuf/protoc-gen-go如果成功会在GOPATH/bin下生成protoc-gen-go.exe文件3、创建一个test.proto文件//指定版本//注意proto3与proto2的写法有些不同syntax proto3;//包名通过protoc生成时go文件时package test;//手机类型//枚举类型第一个字段必须为0enumPhoneType {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;}4、运行如下命令 protoc --go_out. *.proto会生成一个test.pb.go的文件具体的文件内容我就不截图了。5、在go语言中使用protobufpackage main;import (github.com/golang/protobuf/protoprotobuf/testio/ioutilosfmt)func write() {p1 : test.Person{Id:1,Name:小张,Phones: []*test.Phone{{test.PhoneType_HOME,111111111},{test.PhoneType_WORK,222222222},},};p2 : test.Person{Id:2,Name:小王,Phones: []*test.Phone{{test.PhoneType_HOME,333333333},{test.PhoneType_WORK,444444444},},};//创建地址簿book : test.ContactBook{};book.Personsappend(book.Persons, p1);book.Personsappend(book.Persons, p2);//编码数据data, _ :proto.Marshal(book);//把数据写入文件ioutil.WriteFile(./test.txt, data, os.ModePerm);}func read() {//读取文件数据data, _ : ioutil.ReadFile(./test.txt);book : test.ContactBook{};//解码数据proto.Unmarshal(data, book);for _, v :range book.Persons {fmt.Println(v.Id, v.Name);for _, vv :range v.Phones {fmt.Println(vv.Type, vv.Number);}}}func main() {write();read();}