我正在尝试编写一个程序来将二进制文件读入 golang 中的结构,方法是使用二进制包读取二进制文件以填充包含数组的结构,我使用的是数组而不是切片,因为我想指定字段长度,这似乎工作正常但是当我尝试使用反射来打印我们的字段值时出现此错误恐慌:反映:对数组值调用 reflect.Value.Bytes这是代码package mainimport ( "encoding/binary" "fmt" "log" "os" "reflect")type SomeStruct struct { Field1 [4]byte Field2 [2]byte Field3 [1]byte}func main() { f, err := os.Open("/Users/user/Downloads/file.bin") if err != nil { log.Fatalln(err) } defer f.Close() s := SomeStruct{} err = binary.Read(f, binary.LittleEndian, &s) numOfFields := reflect.TypeOf(s).NumField() ps := reflect.ValueOf(&s).Elem() for i := 0; i < numOfFields; i++ { value := ps.Field(i).Bytes() for j := 0; j < len(value); j++ { fmt.Print(value[j]) } }}当我将代码更改为此package mainimport ( "encoding/binary" "fmt" "log" "os" "reflect")type SomeStruct struct { Field1 [4]byte Field2 [2]byte Field3 [1]byte}func main() { f, err := os.Open("/Users/user/Downloads/file.bin") if err != nil { log.Fatalln(err) } defer f.Close() s := SomeStruct{} err = binary.Read(f, binary.LittleEndian, &s) numOfFields := reflect.TypeOf(s).NumField() ps := reflect.ValueOf(&s).Elem() for i := 0; i < numOfFields; i++ { value := ps.Field(i) fmt.Print(value) }}它打印带有 ascii 表示的数组,我需要打印 ascii 的 char 表示,当我感到恐慌时想法?
添加回答
举报
0/150
提交
取消