美文网首页
golang初始protobuf

golang初始protobuf

作者: 夜空最亮的9星 | 来源:发表于2023-11-09 16:27 被阅读0次

    编写.proto文件

    //指定的当前proto语法的版本,有2和3
    syntax = "proto3";
    //option go_package="path:name"; path 表示生成的go文件的存放地址,会自动生成目录的name表示生成的go文件所属包名
    option go_package = "demo1/pb";
    
    //指定等会文件生成出来的package (可选参数)
    package service;
    
    message Address{
      //自身属性
      int32 id = 1;
      string code = 2;
      string name = 3;
    }
    
    

    编译生产go文件:

    protoc --go_out=. ./address.proto
    
    protoc --go_out=../service  .\address.proto
    //protoc --go_out=./service --go-grpc_out=./service .\address.proto
    
    

    序列化与反序列化:

    
    import (
        "xx/internal/pb"
        "fmt"
        "github.com/golang/protobuf/proto"
        "testing"
    )
    
    
    
    func Test_pb(t *testing.T) {
        p := &pb.Address{
                Name: "北京",
                Code: "20001",
                Id:   1234,
            }
    
        fmt.Println(p.String())
    
        //序列化的过程
        msg, _ := proto.Marshal(p)
        
            //反序列化
        p1 := &pb.Address{}
        err := proto.Unmarshal(msg, p1)
        
        if err != nil {
            panic(err)
        }
        fmt.Println(p1.String())
        fmt.Println(p1.GetId())
        fmt.Println(p1.GetCode())
        fmt.Println(p1.GetName())
    }
    
    
    

    相关文章

      网友评论

          本文标题:golang初始protobuf

          本文链接:https://www.haomeiwen.com/subject/mbwcwdtx.html