2 回答
TA贡献1796条经验 获得超4个赞
地图是无序的,无论是在 Go 中还是按照 JSON 规范。您必须根据需要按顺序调用它们。
r, g, b := color["red"], color["green"], color["blue"]
您还可以将值解组到结构中,这将为您提供确定性布局:
type Color struct {
Red int `json:"red"`
Green int `json:"green"`
Blue int `json:"blue"`
}
http://play.golang.org/p/0l01NxJ4dq
TA贡献1744条经验 获得超4个赞
虽然我个人会采用上面 JimB 描述的路线,但另一种选择只是改变您显示数据的方式。我可以根据您的输出推断出您所做的;fmt.Printf("%v", YourInstance). 如果您使用格式字符串明确指定每个项目的位置,则地图中项目的顺序无关紧要;
fmt.Printf("red: %v, green: %v, blue: %v\n", ColorInstance["red"], ColorInstance["green"], ColorInstance["blue"])现在只打印一个实例,因此要打印整个内容,您需要进一步的逻辑,但这是基本思想。
如果您希望事情井然有序,那么地图不是适合您的结构。如果您想基于密钥快速访问,那么地图是一个不错的选择。如果您只想格式化输出以写入控制台或文件或其他任何内容,可以使用地图轻松完成,但我个人认为,JimB 的建议是进行反序列化和处理此类数据的最佳方法。我的理念是使结构尽可能具体。您可以先完成工作,然后获得更清晰、更简洁、性能更好的代码。
- 2 回答
- 0 关注
- 231 浏览
添加回答
举报
