【发布时间】:2016-11-07 08:26:50
【问题描述】:
当我尝试使用gob 编码器将map[mapKey]string 类型的地图保存到文件中时,它不会将字符串保存在文件中。
这里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 :根据blog.golang.org/go-maps-in-action 博客,如果您有用于映射的嵌套映射类型结构,他们建议使用 Struct。但是我是 Go 新手,我不确定是否可以使用该结构。它没有给出任何编译错误,但它没有保存长字符串。
标签: file dictionary go gob