Optimization 在Go(golang)中嵌入结构化数据
我正在golang开发一个AI游戏引擎,我需要存储一些预计算的数据,以便尽快访问 数据的结构如下所示:Optimization 在Go(golang)中嵌入结构化数据,optimization,map,go,constants,Optimization,Map,Go,Constants,我正在golang开发一个AI游戏引擎,我需要存储一些预计算的数据,以便尽快访问 数据的结构如下所示: { 'type1': { 0: { 0: { 1, 2, 3, 4, 5, 6, 7 }, 1: { 2, 3, 4 }, }, 1: { 0: { 2, 3, 4, 5, 6 }, }, }, "type2": { 0
{
'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 },
},
},
}
将这些数据嵌入已编译二进制文件的最佳方式是什么?数据永远不会改变,代表着游戏规则
我知道我可以创建一个在堆上分配映射的函数,但我认为更自然的做法是直接在数据所在的位置访问数据。事实证明,嵌入数据非常容易。要在包作用域中声明变量,请执行以下操作:
var someVar = map[string][][][]uint8 {
'type1': [][][]uint8 {
0: [][]uint8 {
0: []uint8 { 1, 2, 3, 4, 5, 6, 7, },
},
},
}
在包作用域中声明它可以使其可访问,至少对于包作用域中的函数是如此
这个标记唯一令人恼火的地方是,最初必须声明整个结构的格式。然后,在深入层次结构时,需要“弹出”结构的第一部分。例如:
var someVar = map[string][][][]uint8 {}
这里,map[string]uint8声明了一个带有字符串键和uint8值的映射。map[string][]uint8使用字符串键和uint8值数组声明一个映射
对于深入结构的每一层,都会弹出格式定义的开头
var someVar map[string][][][]uint8 {
0: [][][]uint8 {
0: [][]uint8 {
0: []uint8 {
1, 2, 3, 4, 5,
},
},
},
}
这个奇怪的缩进旨在说明从全局范围弹出的内容→ 实际上,在构建映射时,可以省略类型。看见