• go protocgengo 安装详解


    首先是安装官方的protoc工具,可以从其GitHub官方网站下载

    https://github.com/protocolbuffers/protobuf/releases

    我下载的win-64版本

    下载完成后解压把bin下面的protoc.exe 拷贝到GOPATH下面

    然后是安装针对Go语言的代码生成插件
    go get github.com/golang/protobuf/protoc-gen-go

      

    报错如下错误

      

    我使用的go版本是1.17。而Go1.17版使用go install安装依赖。所以应该按照它下面的格式go install pkg@version进行拉取,同时按照提示原来的地址作废需要
    替换成google.golang.org/protobuf,最终命令为:

    go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
    

      

    本地先创建了一个hello.proto

    syntax = "proto3";
    
    package main;
    
    message String {
      string value = 1;
     }
    

      

    然后通过以下命令生成相应的Go代码

    protoc --go_out=. hello.proto
    

    其中go_out参数告知protoc编译器去加载对应的protoc-gen-go工具,然后通过该工具生成代码放到当前目录。最后是一系列要处理的Protobuf文件的列表

    如果出现下图问题,检查一下环境变量

    错误:

    提示需要  option go_package="./;main";

    go_package 是指生成的文件要放哪里,main指生成的文件包名是什么

    最终生成的文件:

     生成的结构体中还会包含一些以XXX_为名字前缀的成员,我们已经隐藏了这些成员。同时String类型还自动生成了一组方法,

    其中ProtoMessage()方法表示这是一个实现了proto.Message接口的方法。此外,Protobuf还为每个成员生成了一个Get方法,

    Get方法不仅可以处理空指针类型,而且可以和Protobuf第2版的方法保持一致(第二版的自定义默认值特性依赖这类方法)

  • 相关阅读:
    C# 文字转声音
    Parameter配置文件获取
    反射动态创建不同的Processor
    程序代码记Log
    Dictionary序列化和反序列化
    HQueue:基于HBase的消息队列
    Angular系列----AngularJS入门教程05:双向绑定(转载)
    Angular系列----AngularJS入门教程04:迭代器过滤(转载)
    Angular系列---- AngularJS入门教程03:AngularJS 模板(转载)
    Angular系列----AngularJS入门教程02:静态模板(转载)
  • 原文地址:https://www.cnblogs.com/shiding/p/16608117.html
Copyright © 2020-2023  润新知