发现已经有protocbuf对go的支持了,特此来尝试一下。
1.首先得安装protocbuff的go的支持包
我采用源码安装在自己工程下
hg clone https://code.google.com/p/goprotobuf/
然后 make 就可以了
如果出现不能make 的请在命令行下go env看看当前的GO_PATH是否有你当前的工程路径,没有则添加
成功后在你的工程的bin 和 pkg下会安装成功protoc 对go的支持。
为了方便,我把protoc 和protoc-gen-go拷到了/usr/local/bin下
2.编写test.proto文件
package code.blackbeans.com;
message User{
required int32 uid = 1;
required string name = 2;
}
使用protoc --go_out=. xxx.proto
自己的目录下就会有对应的xxx.pb.go生成
go install xxx.pb.go
这样就可以在自己的.go文件中使用了
3.
package main
import entry "code.blackbeans.com"
import proto "code.google.com/p/goprotobuf/proto"
import (
"fmt"
"log"
)
func main() {
user := &entry.User{
Uid: proto.Int32(1),
Name: proto.String("blackbeans"),
}
encObj, err := proto.Marshal(user)
if nil == err {
fmt.Println("length:", len(encObj))
tobj := &entry.User{}
e := proto.Unmarshal(encObj, tobj)
if nil == e {
fmt.Println(tobj.GetName())
} else {
log.Fatalln("decode fail ", e)
}
} else {
log.Fatalln("encode fail", err)
}
}
输出结果:
blackbeans-mac:main Xmx$ go run main.go
length: 14
blackbeans
本文详细介绍了如何通过源码安装protobuf的Go支持包,并编写.proto文件实现Go语言的数据序列化过程。通过使用protoc命令生成pb.go文件,实现数据的编码和解码操作,最终展示了一个简单的实例,输出了序列化后的字符串'blackbeans'。
1万+

被折叠的 条评论
为什么被折叠?



