protobuf简单示例

user.proto

syntax = "proto3";

package demo;

option go_package = "./pb";  //指定go_out对应的目录

message UserInfo{
    int32 UserType = 1;
    string UserName = 2;
    string UserInfo = 3;
}
// 执行命令
>>> protoc --go_out=. user.proto
会在当前pb目录下生成user.pb.go文件

如何使用

// main.go
package main

import (
	"demo/pb"
	"fmt"

	"google.golang.org/protobuf/proto"
)

func main() {
	// 初始化message UserInfo
	usermsg := &pb.UserInfo{
		UserType: 1,
		UserName: "jim",
		UserInfo: "i am a worker!",
	}

	//序列化
	userdata, err := proto.Marshal(usermsg)
	if err != nil {
		fmt.Println("Marshaling err:", err)
	}

	//反序列化
	encodingmsg := &pb.UserInfo{}
	err = proto.Unmarshal(userdata, encodingmsg)

	if err != nil {
		fmt.Println("Unmarshaling err:", err)
	}

	// 一些生成的相关方法
	fmt.Printf("GetUserType:%d\n", encodingmsg.GetUserType())
	fmt.Printf("GetUserInfo:%s\n", encodingmsg.GetUserInfo())
	fmt.Printf("GetUserName:%s\n", encodingmsg.GetUserName())
	/*
		GetUserType:1
		GetUserInfo:i am a worker!
		GetUserName:jim
	*/
}

posted @   我在路上回头看  阅读(101)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示