我正在致力于在戈朗的人工智能游戏引擎,我需要存储一些预先计算的数据,以便尽可能快地访问。
数据的结构如下:
{
'type1': {
0: {
0: { 1, 2, 3, 4, 5, 6, 7 },
1: { 2, 3, 4 },
},
1: {
0: { 2, 3, 4, 5, 6 },
},
},
"type2": {
0: {
{ 63, 23, 42, 12 },
},
},
}将这些数据嵌入到编译的二进制文件中的最佳方法是什么?数据将永远不会改变,并代表游戏规则。
我知道我可以创建一个函数来分配堆上的映射,但我认为更自然的是直接访问数据所在的位置。
发布于 2013-12-10 13:47:45
事实证明,嵌入数据是相当容易的。要在包作用域中声明变量,请执行以下操作:
var someVar = map[string][][][]uint8 {
'type1': [][][]uint8 {
0: [][]uint8 {
0: []uint8 { 1, 2, 3, 4, 5, 6, 7, },
},
},
}在包作用域中声明它可以访问它,至少对于包作用域中的函数是如此。
这个标记唯一令人讨厌的地方是,最初您必须声明整个结构的格式。然后,当您深入到层次结构中时,需要“弹出”结构的第一部分。示例:
var someVar = map[string][][][]uint8 {}在这里,mapstringuint8用字符串键和uint8值声明了一个映射。mapstringuint8使用字符串键和uint8值数组声明一个映射。
对于深入到结构中的每一个层次,都会弹出格式定义的开始。
var someVar map[string][][][]uint8 {
0: [][][]uint8 {
0: [][]uint8 {
0: []uint8 {
1, 2, 3, 4, 5,
},
},
},
}奇怪的缩进是为了说明什么是被弹出的
https://stackoverflow.com/questions/20494079
复制相似问题