2017-02-25 4 views
-1

Ich versuche, Binärdateien mit Golang zu lesen, aber habe eine Frage.gehen - binäre Datei mit Struktur lesen

Wenn ich es auf diese Weise zu lesen, werden alle in Ordnung sein

package main 

import (
    "encoding/binary" 
    "fmt" 
    "os" 
) 

type Header struct { 
    str1 int32 
    str2 [255]byte 
    str3 float64 
} 

func main() { 

    path := "test.BIN" 

    file, _ := os.Open(path) 

    defer file.Close() 

    thing := Header{} 
    binary.Read(file, binary.LittleEndian, &thing.str1) 
    binary.Read(file, binary.LittleEndian, &thing.str2) 
    binary.Read(file, binary.LittleEndian, &thing.str3) 

    fmt.Println(thing) 
} 

Aber wenn ich optimieren die .Read-Abschnitt zu

binary.Read(file, binary.LittleEndian, &thing) 
//binary.Read(file, binary.LittleEndian, &thing.str1) 
//binary.Read(file, binary.LittleEndian, &thing.str2) 
//binary.Read(file, binary.LittleEndian, &thing.str3) 

ich die folgende Fehlermeldung erhalten:

panic: reflect: reflect.Value.SetInt using value obtained using unexported field 

Kann mir jemand sagen warum?

Alle Beispiele sind useing die "optimierte Wege"

Thanks :)

Antwort

1

str1, str2 und str3 unexported sind. Das bedeutet, dass andere Pakete sie nicht sehen können. Um sie zu exportieren, schreiben Sie den ersten Buchstaben.

type Header struct { 
    Str1 int32 
    Str2 [255]byte 
    Str3 float64 
} 
+0

Danke :) jetzt kenne ich die (un) exportierte Nachricht :)) – overboarded