Go 使用 protobuf


一.环境准备

安装 protoc ,protoc 是用来执行根据 proto 文件生成 代码的工具。

访问 https://github.com/protocolbuffers/protobuf/releases 选择对应的系统进行下载。

image-20220310173032102

为了方便使用,建议将 protoc 加到 PATH 中,mac 可以放到 /usr/local/bin/ 下。

安装 proto-gen go , 执行命令

go install github.com/golang/protobuf/protoc-gen-go@lates

安装完成后检查是否安装成功

ls $GOPATH/bin|grep protoc-gen-go

二.编写代码

编写 proto 文件

syntax = "proto3";
option go_package = "/pb";

message Person {
    string name = 1;
}

生成 pb.go

protoc --go_out=. *.proto

生成 grpc 使用命令:protoc --go_out=plugins=grpc:. *.proto

安装依赖

go get github.com/golang/protobuf

序列化和反序列化 main.go

package main

import (
	"fmt"
	"github.com/golang/protobuf/proto"
	"go-protobuf/pb"
	"log"
)

func main() {
	p := &pb.Person{
		Name: "lzq",
	}

	data, err := proto.Marshal(p)
	if err != nil {
		log.Fatal(err)
	}

	fmt.Printf("matshal data len: %d\n", len(data))

	np := &pb.Person{}
	if err = proto.Unmarshal(data, np); err != nil {
		log.Fatal(err)
	}

	fmt.Printf("unmatshal person name: %s\n", np.Name)

}

输出

image-20220310175454721


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM