Golang:映射到struct

时间:2014-05-05 21:37:31

标签: map struct go

由于某种原因(固定长度数据文件解析),我有一张地图,我希望地图的元素保存在结构中。

让我们说:

type Point struct {X, Y int}
point := make(map[string]int)

point["X"] = 15
point["Y"] = 13

p := Point{point} // doesn't work

我该怎么做?或者我走错了路?

2 个答案:

答案 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包含很多字段时,这会使代码更容易被修改。