首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

golang之路-goprotobuf应用

2013-01-04 
golang之路--goprotobuf使用发现已经有protocbuf对go的支持了,特此来尝试一下。1.首先得安装protocbuff的go

golang之路--goprotobuf使用

发现已经有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 mainimport 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: 14blackbeans

?

热点排行