日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

mac golang grpc proto pb文件生成go文件.md

發(fā)布時間:2024/2/28 编程问答 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mac golang grpc proto pb文件生成go文件.md 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

文章目錄

    • 1.簡介
    • 2.操作步驟
      • 1. 安裝基礎(chǔ)的protoc工具
        • 1. 下載
        • 2. 添加protoc到PATH
      • 3. 安裝golang的支持
      • 4. 使用
        • 1. 普通編譯
        • 2. import的路徑
    • 參考

1.簡介

??protobuf是google的一個數(shù)據(jù)編碼格式,類似json一樣,但是壓縮率更好,表達的類型也更多,在rpc服務(wù)中使用的比較多。golang的grpc也是挺好玩的,基于http的rpc服務(wù),可能還是為了更好的數(shù)據(jù)壓縮?還是因為沒有spring cloud這樣強大的對http的封裝?說到這里可以吐槽一下,這一份工作中開始用到了號稱世界上最好的語言golang,老實說,能夠吊打python, 但是和我最愛的java相比還是有很大的差距的,我要偷偷的喊一句java 是最好的編程語言了。
??golang基本上可以認為是偏向函數(shù)式編程的語言,語言的簡潔性相對來說比java更簡潔(簡潔一般情況下也意味著信息的丟失,所以golang代碼的可讀性我覺得比java還是差一丟丟),這不是最重要的,只要不是python那種看代碼全靠print的都還好。golang的最大的缺陷我認為在于沒有對繼承進行支撐,golang的設(shè)計理念應(yīng)該是摒棄了繼承,所有的都用組合來實現(xiàn),在面向?qū)ο蟮木幊讨芯蜁茈y受,對象初始化的時候就需要手動初始化父類,如果是多重繼承,真會讓人哭的。還有就是沒有切面支持,也沒有注解支持,這兩個特性在java程序中真的是非常優(yōu)秀的特性,在座復(fù)雜的系統(tǒng)設(shè)計的時候想要做到靈活這兩個特性非常好用,動態(tài)獲取一些信息,而對于golang來說則只能采用硬編碼了,做復(fù)雜系統(tǒng)設(shè)計的時候會很痛苦,只能使用策略模式手動維護了,很多時候能夠應(yīng)付的場景也很有限??纯磄olang的后期發(fā)展吧,目前只能說做做業(yè)務(wù)還是可以的。
??跑偏了,再來說說mac下如何使用protoc工具生成go文件吧。

2.操作步驟

1. 安裝基礎(chǔ)的protoc工具

1. 下載

cd ~/software/protobuf wget https://github.com/protocolbuffers/protobuf/releases/download/v3.12.0/protoc-3.12.0-osx-x86_64.zip unzip -xzf protoc-3.12.0-osx-x86_64.zip

2. 添加protoc到PATH

對應(yīng)的readme文件中這樣說

This package contains a precompiled binary version of the protocol buffer compiler (protoc). This binary is intended for users who want to use Protocol Buffers in languages other than C++ but do not want to compile protoc themselves. To install, simply place this binary somewhere in your PATH.If you intend to use the included well known types then don't forget to copy the contents of the 'include' directory somewhere as well, for example into '/usr/local/include/'.

也就是只要把bin/protoc這個二進制文件移動到path下面即可。

mv bin/protoc /usr/local/protoc # 這一步有多重操作方式,比如把路徑加到PATH下面 #查看 protoc protoc --version

3. 安裝golang的支持

這個是google的支持,這個貌似是最快的,支持的也很好

go get github.com/gogo/protobuf/protoc-gen-gofast

也可以安裝這個google的,但是后面的使用命令就不一樣了

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

4. 使用

1. 普通編譯

protoc --gofast_out=plugins=grpc:./mygo mygo/service/ago/service/service.protoprotoc --gofast_out=plugins=grpc:./ service.proto

這里的grpc:./mygo使用的是相對路徑,默認后面pb的路徑使用的也是相對路徑,會在./mygo生成pb文件中指定的go_package目錄,然后生成對應(yīng)的go文件。

2. import的路徑

如果有import,則是使用執(zhí)行protoc 命令所在的路徑作為import相對路徑的起始位置

比如pb文件是這樣

$pwd /Users/chencc/work/git/mygo/service/call/talent$cat talent.proto import "call/base.proto"; 這個import的文件的查找就是按照執(zhí)行proto命令的位置進行查找 option go_package = "mygo/service/call/talent"; // 這個package會按照 gofast_out 參數(shù)的路徑生成子目錄

兩個文件的路徑分別是

/Users/chencc/work/git/mygo/service/call/talent/talent.proto /Users/chencc/work/git/mygo/service/call/base.proto其中talent.proto import 了base.proto

則執(zhí)行proto命令的位置必須是/Users/chencc/work/git/mygo/service

執(zhí)行的命令是

cd /Users/chencc/work/git/mygo/service/protoc --gofast_out=plugins=grpc:/Users/chencc/work/git/ call/talent/talent.proto/Users/chencc/work/git/ 這個目錄是 mygo項目的父級目錄

參考

這個介紹的更好,可以參考這篇文章進行更加深入的學習
https://www.cnblogs.com/bergus/articles/protoc-gong-ju-cha-jian-he-sheng-tai.html

總結(jié)

以上是生活随笔為你收集整理的mac golang grpc proto pb文件生成go文件.md的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。