`
blackbeans
  • 浏览: 140639 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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 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

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics