第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

使用閱讀器從 []byte 讀取結(jié)構(gòu)時出錯

使用閱讀器從 []byte 讀取結(jié)構(gòu)時出錯

Go
梵蒂岡之花 2022-07-25 11:15:00
我正在嘗試從 []byte 變量中讀取結(jié)構(gòu)。當(dāng)我嘗試讀取單個變量時,我可以使其工作,但是當(dāng)嘗試直接讀取結(jié)構(gòu)時,我收到以下錯誤: panic: reflect: reflect.Value.SetInt using value obtained using unexported field這是我嘗試過的:package mainimport (    "bytes"    "encoding/binary"    "fmt")type foo struct {    a int8    b int8}func main() {    var data1 int8    var data2 foo        b := []byte{0x18, 0x2d, 0x44, 0x54, 0xfb, 0x21, 0x09, 0x40}        buf := bytes.NewReader(b)    // READ data1 (int8)    fmt.Println("READ data1")    err := binary.Read(buf, binary.LittleEndian, &data1)    if err != nil {        fmt.Println("binary.Read failed:", err)    }    fmt.Println(data1)    // READ data2 (struct with two int8s)    fmt.Println(data2)    err = binary.Read(buf, binary.LittleEndian, &data2)    if err != nil {        fmt.Println("binary.Read failed:", err)    }       fmt.Print(data2)}這是完整的錯誤:READ data124{0 0}panic: reflect: reflect.Value.SetInt using value obtained using unexported fieldgoroutine 1 [running]:reflect.flag.mustBeAssignableSlow(0x1a3)    /usr/local/go-faketime/src/reflect/value.go:257 +0x1b9reflect.flag.mustBeAssignable(...)    /usr/local/go-faketime/src/reflect/value.go:247reflect.Value.SetInt(0x4a9760, 0xc00010000c, 0x1a3, 0x2d)    /usr/local/go-faketime/src/reflect/value.go:1633 +0x3bencoding/binary.(*decoder).value(0xc00006ae50, 0x4a9760, 0xc00010000c, 0x1a3)    /usr/local/go-faketime/src/encoding/binary/binary.go:574 +0x9a5encoding/binary.(*decoder).value(0xc00006ae50, 0x4b17e0, 0xc00010000c, 0x199)    /usr/local/go-faketime/src/encoding/binary/binary.go:558 +0x3a8encoding/binary.Read(0x4e2460, 0xc00010c000, 0x4e2ea0, 0x58c588, 0x4a5d80, 0xc00010000c, 0x0, 0x0)    /usr/local/go-faketime/src/encoding/binary/binary.go:259 +0x33amain.main()    /tmp/sandbox052619529/prog.go:36 +0x358Program exited: status 2.可以在此處找到可重現(xiàn)的示例:https://play.golang.org/p/4UWy2OuDAsL
查看完整描述

1 回答

?
蕭十郎

TA貢獻(xiàn)1815條經(jīng)驗 獲得超13個贊

問題是您的foo結(jié)構(gòu)字段未導(dǎo)出(第一個字母未大寫),因此反射包無法訪問那些進行寫入(它仍然可以讀取未導(dǎo)出的字段)。

將您的結(jié)構(gòu)更改為:

type foo struct {
    A int8
    B int8
    }


查看完整回答
反對 回復(fù) 2022-07-25
  • 1 回答
  • 0 關(guān)注
  • 107 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號