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

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

恐慌:SetUint 使用使用未導出字段獲得的值

恐慌:SetUint 使用使用未導出字段獲得的值

Go
哈士奇WWW 2023-05-08 16:07:04
從接收到的字節緩沖區服務器,我想復制結構。緩沖區的格式是固定大小的字節,如下所示。00000000  83 27 48 12 6c 00 00 00  01 02 00 00 01 01 00 02  |.'H.l...........|00000010  10 01 d2 02 96 49 00 00  00 00 87 d6 12 00 00 00  |.....I..........|00000020  00 00 01 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|00000030  00 02 01 02 3c 01 01 00  00 00 01 01 01 01 18 10  |....<...........|00000040  2c 01 90 01 01 6c 07 03  c8 02 01 02 03 9c 0a 0b  |,....l..........|00000050  0c 00 00 00 01 01 00 00  00 00 00 00 00 01 01 01  |................|00000060  01 01 01 01 01 01 01 01  01 00 01 01 01 00 00 00  |................|我的結構在下面。type HeaderT struct {    magicValue [8]byte    bodyLength [4]byte    bodyVersion [1]byte    ...}我的實現在下面。func onMessageReceived(client MQTT.Client, message MQTT.Message) {    payload := message.Payload()    fmt.Printf("Received message on topic: %s\nMessage: \n%s\n", message.Topic(), hex.Dump(payload))    header := HeaderT {}    err := binary.Read(bytes.NewBuffer(payload[:]), binary.LittleEndian, &header)  // <-- error occurred at this line    ...}我的代碼如下所示引起恐慌。
查看完整描述

1 回答

?
守著星空守著你

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

問題是沒有一個HeaderT字段是“公共的”。

請注意,所有字段都以小寫字母開頭 - 這意味著這些字段對于包外的任何代碼都無法訪問。

從規格:

導出的標識符

可以導出標識符以允許從另一個包訪問它。如果兩者都導出標識符:

  • 標識符名稱的第一個字符是 Unicode 大寫字母(Unicode 類“Lu”);和

  • 標識符在包塊中聲明,或者它是字段名稱或方法名稱。

不會導出所有其他標識符。

嘗試通過將他們的名字大寫來導出它們:

type?HeaderT?struct?{
????MagicValue?[8]byte
????BodyLength?[4]byte
????BodyVersion?[1]byte
????...
}


查看完整回答
反對 回復 2023-05-08
  • 1 回答
  • 0 關注
  • 140 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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