Map Golang:映射到结构

Map Golang:映射到结构,map,struct,go,Map,Struct,Go,出于某种原因(固定长度数据文件解析),我得到了一个映射,我希望映射的元素保存在一个结构中 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) 比如说:

出于某种原因(固定长度数据文件解析),我得到了一个映射,我希望映射的元素保存在一个结构中

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)
比如说:

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

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

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

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

据我所知,除非您正在使用软件包,否则无法进行这样的自动映射,但您可以使用以下方法:

p := Point{X: point["X"], Y: point["Y"]}

如果效率不是那么重要,那么可以将映射封送到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)

当结构包含很多字段时,这使得代码更容易修改

你唯一的选择是
p:=Point{Point[“X”],Point[“Y”])
。你不能隐式地将
map
转换为
struct
。如果你需要对多种类型执行此操作,你几乎肯定可以使用反射编写一个通用函数:因此我不同意这种方法(速度慢)我不同意对此投反对票,因为这是一个有效的答案