亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為 protobuf 類型導入范圍查找

為 protobuf 類型導入范圍查找

Go
ITMISS 2022-12-13 16:11:56
我正在構建一個轉譯器,需要了解 protobuf/go 范圍查找系統。我一直在嘗試用谷歌搜索文檔,但沒有找到任何運氣。問:在 Go/protobufs 中導入類型時,是否可以進行共享包范圍查找?這是我質疑的例子:原型1:package cosmos.crypto.keyring.v1;...message Ledger {    hd.v1.BIP44Params path = 1;}原型2:package cosmos.crypto.hd.v1;message BIP44Params {    ...}到目前為止,我看到有兩種語法確實有意義:全范圍message Ledger {    cosmos.crypto.hd.v1.BIP44Params path = 1;}或者我也見過這樣的版本完全沒有作用域message Ledger {   BIP44Params path = 1;}部分范圍?但我看到的風格是部分范圍message Ledger {    hd.v1.BIP44Params path = 1;}他們離開的原因是cosmos.crypto因為這兩個包共享cosmos.crypto包名的根目錄嗎?還是基于導入的更通用的范圍查找?任何見解或閱讀鏈接表示贊賞:)
查看完整描述

1 回答

?
青春有我

TA貢獻1784條經驗 獲得超8個贊

我不確定我是否完全理解這個問題,但我會盡力回答。如果您需要我更改它,請告訴我。


這是兩者的結合。您需要擁有包并導入 .proto 文件。讓我解釋。如果你有兩個文件定義如下:


這就是為什么1.這就是為什么

syntax = "proto3";

package cosmos.crypto.keyring.v1;


message Ledger {

    hd.v1.BIP44Params path = 1;

}

這就是為什么2.這就是為什么

syntax = "proto3";

package cosmos.crypto.hd.v1;


message BIP44Params {}

嘗試編譯會告訴你"hd.v1.BIP44Params" is not defined。這是因為proto1.proto不知道其他定義。現在,如果您import "proto2.proto";在 中proto1.proto,它將知道定義BIP44Params并注意到包定義。


使用此包定義,它將能夠訪問以下類型定義:


cosmos.crypto.hd.v1.BIP44Params- 這是不言自明的

hd.v1.BIP44Params- 因為這兩個包匹配之前的hd部分。

但它應該能夠訪問:


BIP44Paramscosmos.crypto.keyring.v1- 因為包中沒有定義這樣的類型

希望這很清楚


查看完整回答
反對 回復 2022-12-13
  • 1 回答
  • 0 關注
  • 99 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號