Wenn ich versuche, die Karte des Typs map[mapKey]string
in eine Datei mit gob
Encoder zu speichern, speichert es keine Zeichenfolge in der Datei.Nicht in der Lage, Daten in der Datei ordnungsgemäß zu speichern mit Gob
Hier ist mapKey
Struct und Map-Wert ist lange JSON-String.
type mapKey struct{
Id1 string
Id2 string
}
Und wann immer ich bin, anstatt der Struktur verschachtelte Karte verwenden wie:
var m = make(map[string]map[string]string)
Es funktioniert gut und Speicher Zeichenfolge richtig. Ich bin mir nicht sicher, was ich hier vermisse.
-Code kodiert, dekodiert und in Datei speichern:
func Save(path string, object interface{}) error {
file, err := os.Create(path)
if err == nil {
encoder := gob.NewEncoder(file)
encoder.Encode(object)
}
file.Close()
return err
}
// Decode Gob file
func Load(path string, object interface{}) error {
file, err := os.Open(path)
if err == nil {
decoder := gob.NewDecoder(file)
err = decoder.Decode(object)
}
file.Close()
return err
}
func Check(e error) {
if e != nil {
_, file, line, _ := runtime.Caller(1)
fmt.Println(line, "\t", file, "\n", e)
os.Exit(1)
}
}
Und warum Sie als nicht verwenden verschachtelte Karte. Wahrscheinlich muss die Eingabe wie eine verschachtelte Karte sein. –
@SimoEndre: Gemäß https://blog.golang.org/go-maps-in-action blog schlagen sie vor, Struct zu verwenden, wenn Sie eine verschachtelte Kartentypenstruktur für das Mapping haben. Allerdings bin ich neu in Go und ich bin mir nicht sicher, ob ich die Struktur verwenden kann oder nicht. Es gibt keinen Kompilierungsfehler, aber die lange Zeichenfolge wird nicht gespeichert. – rohan