golang使用protobuf例子
发布时间:2020-12-16 18:23:53 所属栏目:大数据 来源:网络整理
导读:安装 1.go get github.com/golang/protobuf; 2.进入gopath的protobuf目录,执行makemake install,在gopath/bin目录下生成proto相关工具; 使用 1.执行命令vim msg.proto新建一个名为msg.proto的文件,并将其打开,在其中输入如下内容: package demo; //go
安装1.go get github.com/golang/protobuf; 使用1.执行命令vim msg.proto新建一个名为msg.proto的文件,并将其打开,在其中输入如下内容: package demo;
//go中导出结构体、方法必须大写
message Msg
{
required int32 MsgType = 1; //必选字段
required string MsgInfo = 2; //必选字段
required string MsgFrom = 3; //必选字段
}
输入完成后,保存退出,在终端下执行protoc –go_out=. msg.proto生成对应的msg.pb.go文件,在终端下切换到msg.pb.go所在目录,执行go install生成相应的包。 package main
import (
"github.com/golang/protobuf/proto"
"fmt"
"os"
"github.com/xww/rabbitgo/protobuf/demo"
)
func main() {
//注意每条信息后面的,号
msg_test := &demo.Msg{
MsgType: proto.Int32(1),MsgInfo: proto.String("I am hahaya."),MsgFrom: proto.String("127.0.0.1"),}
//将数据序列化到字符串中(写操作)
in_data,err := proto.Marshal(msg_test)
if err != nil {
fmt.Println("Marshaling error: ",err)
os.Exit(1)
}
//将数据从字符串中反序列化出来(读操作)
msg_encoding := &demo.Msg{}
err = proto.Unmarshal(in_data,msg_encoding)
if err != nil {
fmt.Println("Unmarshaling error: ",err)
os.Exit(1)
}
fmt.Printf("msg type: %dn",msg_encoding.GetMsgType())
fmt.Printf("msg info: %sn",msg_encoding.GetMsgInfo())
fmt.Printf("msg from: %sn",msg_encoding.GetMsgFrom())
}
输入完成后,保存退出,确保在msg.pb.go目录已经执行了go install,最后在终端下输入go run main.go看看效果吧~ (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |