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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章