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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

gRPC in ASP.NET Core 3.x -- Protocol Buffer, Go语言的例子(下)

發布時間:2023/12/4 asp.net 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 gRPC in ASP.NET Core 3.x -- Protocol Buffer, Go语言的例子(下) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前兩篇文章半年前寫的:

gRPC in ASP.NET Core 3.0 -- Protocol Buffer(1),

gRPC in ASP.NET Core 3.0 -- Protocol Buffer(2)

這是上一篇:gRPC in ASP.NET Core 3.x -- Protocol Buffer, Go語言的例子(上)

接著上一篇文章。

?

寫入到JSON

首先寫一個func:

在這里,使用了jsonpb里面的Marshaler這個struct,這個struct上有一個方法叫做MarshalToString,它可以把proto.Message類型轉化為JSON字符串。

與此同時,需要添加引用,通常IDE會自動添加該引用。

?

然后修改main方法,添加兩行代碼:

?

運行 go run main.go:

打印到屏幕上到pmStr為:

??

下面查看一下jsonpb.Marshaler 的源碼:

可以看到里面有幾個屬性,它們可以用來配置JSON轉化。

?

我可以設置縮緊為一個tab:

?

然后再次執行go程序,結果如下:

?

而json里的這些屬性名是怎么轉化的呢?打開proto生成的go文件:

可以看到前4個屬性的tags除了有protobuf的,后邊還有json的,所以生成json的屬性名等信息就來自這些tags。

?

從JSON讀取

這里就是使用jsonpb.UnmarshalString這個方法,其余的都很簡單就不解釋了。

運行結果如下:

?

枚舉的例子

在src下面建立second文件夾,里面建立enum.proto文件,

?

代碼如下:

?

執行:protoc --proto_path=src/ --go_out=src/ src/second/enum.proto

生成的代碼如下:

go里面沒有枚舉類型,所以生成的是const常量。

?

同時還生成了兩個map:

一個是數值作為key,文字作為value,另一個map正好反過來。

?

再看一下這個消息本身的struct:

?

然后建立一個函數,并在main里面調用:

函數返回的是指針,然后在main函數里使用了Gender_name這個map,通過em.Gender的數值獲取到對應到文字并輸出。

?

運行結果如下:

?

復雜類型

在src下面建立third文件夾,并建立complex.proto文件:

可以看到DepartmentMessage里面到employees屬性是EmployeeMessage的一個集合。

而且DepartmentMessage有一個parent_department屬性,它的類型為本身。

?

執行:protoc --proto_path=src/ --go_out=src/ src/third/complex.proto

可以看到這生成的文件里面有倆個struct:

?

?

然后建立函數,并在main里面調用:

?注意這里面的指針。

?

輸出結果是:

?

Go語言的例子就到這。。。

接下來繼續Protocol Buffer。。。

總結

以上是生活随笔為你收集整理的gRPC in ASP.NET Core 3.x -- Protocol Buffer, Go语言的例子(下)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。