码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Protocol Buffer的package和go_package说明


    1. protoc --proto_path=$GOPATH/src --proto_path=. --go_out=. ./*.proto
      a. 上面的句编译语句中,--proto_path用于表示要编译的proto文件所依赖的其他proto文件的查找位置,可以使用-I来替代。如果没有指定则从当前目录中查找。
      b. --go_out有两层含义,一层是输出的是go语言对应的文件;一层是指定生成的go文件的存放位置。
      c. --go_out=plugins=grpc:helloworld,这里使用了grpc插件。如果proto文件想在rpc中使用,可以在proto中定义接口如下:
      service SearchService {
        rpc Search(SearchRequest) returns (SearchResponse);
      }
      helloworld表示生成的文件存放地址。
    2. protoc --go_out=plugins=grpc:. --go_opt=paths=source_relative ./update.proto
      a. --go_opt表示生成go文件时候的目录选项,如上面写时表示生成的文件与proto在同一目录。
    3. import、go_package、package
      a. package主要是用于避免命名冲突的,不同的项目(project)需要指定不同的package。
      b. import,如果proto文件需要使用在其他proto文件中已经定义的结构,可以使用import引入。
      c. option go_package = "github.com/protocolbuffers/protobuf/examples/go/tutorialpb"; go_packge有两层意思,一层是表明如果要引用这个proto生成的文件的时候import后面的路径;一层是如果不指定--go_opt(默认值),生成的go文件存放的路径。
      d. 需要注意的是package和go_package的含义。在官方给的文档中,package和go_package的最后一个单词不一样:


      他们的含义分别是:package用于防止不同project之间定义了同名message结构的冲突,因为package名的一个作用是用于init方法中的注册:

      而当go_package存在时,其最后一个单词是生成的go文件的package名字:

      而当go_package不存在时,go文件件的package名字就变成了proto中package指定的名字了。

     

  • 相关阅读:
    [WPF] 使用 HandyControl 的 CirclePanel 画出表盘刻度
    LNMP网站架构
    Cilium v1.12 功能原理解读:ServiceMesh 令人期待
    [漏洞复现] jenkins 远程代码执行 (CVE-2019-100300)
    【每日一题】9.13 PING是怎么工作的?
    【数据聚类】第三章第三节4:类K-Means算法之二分K-均值算法(bisecting K-Means算法)
    ubuntu18.04上使用7z分卷压缩和解压
    通过python实现分析出生日期辨识你的星座 出生日期判断星座
    【20字符串代码题】下标法,辅助数组法
    【linux】coredump问题排查
  • 原文地址:https://blog.csdn.net/qq_30151813/article/details/126941361
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号