golang使用protobuf例子

安装

1.go get github.com/golang/protobuf;
2.进入gopath的protobuf目录,执行make&&make install,在gopath/bin目录下生成proto相关工具;

使用

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生成相应的包。
2.执行命令vim main.go新建一个名为main的go文件,并将其打开,在其中输入如下内容

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: %d\n", msg_encoding.GetMsgType())
    fmt.Printf("msg info: %s\n", msg_encoding.GetMsgInfo())
    fmt.Printf("msg from: %s\n", msg_encoding.GetMsgFrom())
}

输入完成后,保存退出,确保在msg.pb.go目录已经执行了go install,最后在终端下输入go run main.go看看效果吧~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大熊1997

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值