首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Go (golang)中嵌入结构化数据

在Go (golang)中嵌入结构化数据
EN

Stack Overflow用户
提问于 2013-12-10 12:06:16
回答 1查看 263关注 0票数 1

我正在致力于在戈朗的人工智能游戏引擎,我需要存储一些预先计算的数据,以便尽可能快地访问。

数据的结构如下:

代码语言:javascript
复制
{
    '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 },
        },
    },
}

将这些数据嵌入到编译的二进制文件中的最佳方法是什么?数据将永远不会改变,并代表游戏规则。

我知道我可以创建一个函数来分配堆上的映射,但我认为更自然的是直接访问数据所在的位置。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-10 13:47:45

事实证明,嵌入数据是相当容易的。要在包作用域中声明变量,请执行以下操作:

代码语言:javascript
复制
var someVar = map[string][][][]uint8 {
    'type1': [][][]uint8 {
        0: [][]uint8 {
            0: []uint8 { 1, 2, 3, 4, 5, 6, 7, },
        },
    },
}

在包作用域中声明它可以访问它,至少对于包作用域中的函数是如此。

这个标记唯一令人讨厌的地方是,最初您必须声明整个结构的格式。然后,当您深入到层次结构中时,需要“弹出”结构的第一部分。示例:

代码语言:javascript
复制
var someVar = map[string][][][]uint8 {}

在这里,mapstringuint8用字符串键和uint8值声明了一个映射。mapstringuint8使用字符串键和uint8值数组声明一个映射。

对于深入到结构中的每一个层次,都会弹出格式定义的开始。

代码语言:javascript
复制
var someVar map[string][][][]uint8 {
                    0: [][][]uint8 {
                      0: [][]uint8 {
                        0: []uint8 {
                          1, 2, 3, 4, 5,
                        },
                      },
                    },
}

奇怪的缩进是为了说明什么是被弹出的

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20494079

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档