從接收到的字節(jié)緩沖區(qū)服務(wù)器,我想復(fù)制結(jié)構(gòu)。緩沖區(qū)的格式是固定大小的字節(jié),如下所示。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 |................|我的結(jié)構(gòu)在下面。type HeaderT struct { magicValue [8]byte bodyLength [4]byte bodyVersion [1]byte ...}我的實(shí)現(xiàn)在下面。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貢獻(xiàn)1799條經(jīng)驗(yàn) 獲得超8個(gè)贊
問(wèn)題是沒(méi)有一個(gè)HeaderT
字段是“公共的”。
請(qǐng)注意,所有字段都以小寫字母開頭 - 這意味著這些字段對(duì)于包外的任何代碼都無(wú)法訪問(wèn)。
從規(guī)格:
導(dǎo)出的標(biāo)識(shí)符
可以導(dǎo)出標(biāo)識(shí)符以允許從另一個(gè)包訪問(wèn)它。如果兩者都導(dǎo)出標(biāo)識(shí)符:
標(biāo)識(shí)符名稱的第一個(gè)字符是 Unicode 大寫字母(Unicode 類“Lu”);和
標(biāo)識(shí)符在包塊中聲明,或者它是字段名稱或方法名稱。
不會(huì)導(dǎo)出所有其他標(biāo)識(shí)符。
嘗試通過(guò)將他們的名字大寫來(lái)導(dǎo)出它們:
type?HeaderT?struct?{ ????MagicValue?[8]byte ????BodyLength?[4]byte ????BodyVersion?[1]byte ????... }
- 1 回答
- 0 關(guān)注
- 137 瀏覽
添加回答
舉報(bào)
0/150
提交
取消