當我嘗試使用gob
編碼器將map[mapKey]string
類型的映射保存到文件中時,它不會將字符串保存在文件中。無法使用gob正確地在文件中存儲數據
這裏mapKey
是struct和map的值是長json字符串。
type mapKey struct{
Id1 string
Id2 string
}
每當我使用的,而不是像結構嵌套地圖:
var m = make(map[string]map[string]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