欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

protocgo語(yǔ)言 proto language

如何在Go中使用Protobuf

Protobuf對(duì)于Golang通過(guò)插件進(jìn)行支持,因些需要安裝protoc的執(zhí)行環(huán)境,下面我們來(lái)一步步看下,如何搭建一個(gè)編譯環(huán)境。

創(chuàng)新互聯(lián)是網(wǎng)站建設(shè)專家,致力于互聯(lián)網(wǎng)品牌建設(shè)與網(wǎng)絡(luò)營(yíng)銷(xiāo),專業(yè)領(lǐng)域包括成都做網(wǎng)站、網(wǎng)站建設(shè)、外貿(mào)營(yíng)銷(xiāo)網(wǎng)站建設(shè)、電商網(wǎng)站制作開(kāi)發(fā)、重慶小程序開(kāi)發(fā)、微信營(yíng)銷(xiāo)、系統(tǒng)平臺(tái)開(kāi)發(fā),與其他網(wǎng)站設(shè)計(jì)及系統(tǒng)開(kāi)發(fā)公司不同,我們的整合解決方案結(jié)合了恒基網(wǎng)絡(luò)品牌建設(shè)經(jīng)驗(yàn)和互聯(lián)網(wǎng)整合營(yíng)銷(xiāo)的理念,并將策略和執(zhí)行緊密結(jié)合,且不斷評(píng)估并優(yōu)化我們的方案,為客戶提供全方位的互聯(lián)網(wǎng)品牌整合方案!

1. 安裝protoc

2. 下載并安裝protobuf-Go插件

從github上下載插件,并解壓(),得到以下的目錄

[plain] view plain copy

drwxr-xr-x 6 root root 4096 Jun 16 15:45 .

drwxr-xr-x 3 root root 4096 Jun 16 15:48 ..

-rw-r--r-- 1 root root 173 Jun 15 06:31 AUTHORS

-rw-r--r-- 1 root root 170 Jun 15 06:31 CONTRIBUTORS

drwxr-xr-x 3 root root 4096 Jun 15 06:31 jsonpb

-rw-r--r-- 1 root root 1583 Jun 15 06:31 LICENSE

-rw-r--r-- 1 root root 2080 Jun 15 06:31 Makefile

-rw-r--r-- 1 root root 1955 Jun 15 06:31 Make.protobuf

drwxr-xr-x 4 root root 4096 Jun 15 06:31 proto

drwxr-xr-x 7 root root 4096 Jun 16 15:42 protoc-gen-go

drwxr-xr-x 8 root root 4096 Jun 15 06:31 ptypes

-rw-r--r-- 1 root root 7149 Jun 15 06:31 README.md

這時(shí),執(zhí)行make install,多半是不會(huì)成功的,一般會(huì)報(bào)找不到對(duì)應(yīng)的文件,原因在于go源文件中指定的目錄位置是這樣的

gRPC服務(wù)開(kāi)發(fā)和接口測(cè)試初探「Go」

之前寫(xiě)過(guò)了Grpc服務(wù)開(kāi)發(fā)和接口測(cè)試初探【Java】,中間耽擱了一些時(shí)間,Go版本的gRPC測(cè)試開(kāi)發(fā)實(shí)踐才有時(shí)間學(xué)習(xí)使用。其中也是由于自己Go語(yǔ)言不夠熟悉導(dǎo)致的。之前有段時(shí)間想暫時(shí)放棄Go語(yǔ)言的學(xué)習(xí),導(dǎo)致了Go的生疏,原因是從Groovy到Java性能。

回歸正題,Go語(yǔ)言版本的gRPC實(shí)踐相對(duì)Java來(lái)說(shuō)是比較簡(jiǎn)單的,但是總體的工具鏈?zhǔn)潜容^復(fù)雜的,可能是因?yàn)镚o生態(tài)目前相比Java還是比較匱乏吧。下面我先簡(jiǎn)述一下大致的步驟:

以上步驟親自操作可能會(huì)遇到一些小問(wèn)題,我本人搜到的教程什么的也是亂七八糟,踩了一些坑。我沒(méi)有整理出一個(gè)親自實(shí)踐之后的可行的教程,原因有二:

Go語(yǔ)言的gRPC的 proto 編寫(xiě)跟Java大致一致,只有一個(gè)報(bào)名的參數(shù)不太一樣。下面是我的 Hello.proto 內(nèi)容:

這里主要 go_package 網(wǎng)上搜到的配置方式有些不一樣,我沒(méi)有全都嘗試,大家在搜索的資料時(shí)候,盡量先看看 syntax 這個(gè)參數(shù)的值,以及文章教程寫(xiě)作的時(shí)間,如果距離現(xiàn)在太久了,我建議直接關(guān)掉。搜索引擎有過(guò)濾功能,可以過(guò)濾掉過(guò)時(shí)的教程。

這里Go語(yǔ)言gRPC的一點(diǎn)優(yōu)勢(shì),就是在一個(gè)項(xiàng)目中即可實(shí)現(xiàn),Java需要先弄一個(gè)SDK這樣。Go語(yǔ)言的gRPC的代碼可以通過(guò)生成代碼命令中的參數(shù)實(shí)現(xiàn)指定路徑。我是放在了和 proto 文件的同級(jí)目錄。

服務(wù)端代碼也是比較格式化的內(nèi)容,如下:

其中 pb.RegisterHelloServiceServer(s, Ser{}) 如果報(bào)錯(cuò),請(qǐng)檢查自己安裝的工具 protoc-gen-go 或者 protoc-gen-gofast 版本,一般提取報(bào)錯(cuò) message 搜索也能得到解決辦法。

下面是客戶端的代碼,由于學(xué)藝不精,其中大部分參數(shù)的含義目前我也不是很清楚,特別是基于 stream 的請(qǐng)求響應(yīng)的方式使用。后面我先把Java的學(xué)完,再回過(guò)頭來(lái)看Go的,按照這個(gè)順序?qū)W習(xí)和分享。

服務(wù)端輸出:

忘記打日志了。沒(méi)有輸出

客戶端輸出:

Go語(yǔ)言的gRPC測(cè)試開(kāi)發(fā)實(shí)踐已經(jīng)完事兒,大概率上我不會(huì)在工作中使用Go作為主力gRPC測(cè)試語(yǔ)言,后面測(cè)試實(shí)踐內(nèi)容還是會(huì)以Java為主。

protoc-生成go指針

??因?yàn)樵谝恍﹫?chǎng)景中指針表示的含義是比類型表示的多的

假設(shè)上述結(jié)構(gòu)體表示一個(gè)用戶的信息,創(chuàng)建用戶后希望更新用戶名時(shí)該怎么實(shí)現(xiàn)?這里隱藏的一個(gè)問(wèn)題就是: address 為空字符串時(shí),到底是表示不更新該字段?還是表示將該字段置為空?

使用指針的意義就是該字段可以額外表示一重含義

protoc : libprotoc 3.17.3

protoc-gen-go : 1.5.2

optional 對(duì)于 protoc 和 protoc-gen-go 的版本都是有依賴的,在低版本中還需要帶上額外字段

[需要帶上--experimental_allow_proto3_optional]( protocol buffers - How to define an optional field in protobuf 3 - Stack Overflow )

使用上面同樣的 protoc 文件,發(fā)現(xiàn)是無(wú)法支持的

在 gogo/protobuf 還未支持 optional 的語(yǔ)法,一種可行的解法就是在 proto3 中導(dǎo)入 proto2 的文件,并且把需要定義為指針的字段放在 proto2 中

不過(guò)在網(wǎng)絡(luò)上很難找到 wktptr 的介紹,這個(gè)語(yǔ)法也非常讓人困惑

nullable 擴(kuò)展字段無(wú)法支持原生類型,此擴(kuò)展字段對(duì)此是無(wú)效的

??

這樣可以將需要定義為指針的元素定義到 proto2 中然后內(nèi)嵌進(jìn)來(lái)

網(wǎng)站欄目:protocgo語(yǔ)言 proto language
URL鏈接:http://chinadenli.net/article4/ddocpie.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供面包屑導(dǎo)航品牌網(wǎng)站建設(shè)微信公眾號(hào)網(wǎng)站導(dǎo)航網(wǎng)站排名定制網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)