タイプmap[mapKey]string
のマップをgob
エンコーダを使用してファイルに保存しようとすると、ファイル内に文字列が保存されません。ゴブを使用してファイルに正しくデータを保存できません
ここでmapKey
は構造体であり、マップ値は長いjson文字列です。
type mapKey struct{
Id1 string
Id2 string
}
そして時はいつでも、私は次のように代わりに構造体のネストされたマップを使用しています:それは正常に動作し、適切に文字列を保存している
var m = make(map[string]map[string]string)
。私はここで何が欠けているのか分かりません。
コードは、エンコード、デコードおよびファイルに保存するには:タイプmap[mapKey]string
の値を符号化する中で特別なものは何もありません
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)
}
}
そして、なぜあなたはとして使用していませんネストされたマップ。おそらく、入力はネストされたマップである必要があります。 –
@SimoEndre:https://blog.golang.org/go-maps-in-actionブログでは、マッピング用にネストされたマップタイプの構造がある場合は、Structを使用することをおすすめします。 しかし、私は新しくGoです。構造体を使用できるかどうかはわかりません。 コンパイルエラーは発生していませんが、長い文字列は保存されていません。 – rohan