由于某种原因(固定长度数据文件解析),我有一张地图,我希望地图的元素保存在结构中。
让我们说:
type Point struct {X, Y int}
point := make(map[string]int)
point["X"] = 15
point["Y"] = 13
p := Point{point} // doesn't work
我该怎么做?或者我走错了路?
答案 0 :(得分:2)
据我所知,除非您重复使用encoding
包,否则您无法自动映射,但您可以使用以下方式:
p := Point{X: point["X"], Y: point["Y"]}
答案 1 :(得分:0)
如果效率不是那么重要,您可以将地图编组为JSON字节并将其解组回结构。
import "encoding/json"
type Point struct {X, Y int}
point := make(map[string]int)
point["X"] = 15
point["Y"] = 13
bytes, err := json.Marshal(point)
var p Point
err = json.Unmarshal(bytes, &p)
当struct包含很多字段时,这会使代码更容易被修改。