请教大佬们一个 Golang Go语言数据结构问题
请教大佬们一个 Golang Go语言数据结构问题
假如我有一个函数计算出来的结果如下:
{
"android": {
"1.01": {
"101": 0
}
},
"ios": {
"1.01": {
"101": 0,
"102": 2
},
"1.02": {
"101": 0
}
}
}
其中只有android
和ios
这 2 个 key 是已知的,里面两层的 key 及 key 的数量都是未知的
我现在只能用 map 嵌套的方式来表达这个值,即这样map[string]map[string]map[string]int
但是这样感觉可读性太差了,大佬们还有别的方式吗?
或者说是在设计上应该尽量避免掉这种情况
大佬们在实际工作中这种 map 嵌套的情况常用吗?
更多关于请教大佬们一个 Golang Go语言数据结构问题的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
不是大佬
应该避免这种设计,里面包裹成数组方式
更多关于请教大佬们一个 Golang Go语言数据结构问题的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
解析到 map[string]interface{} ,用的时候做类型断言
谢谢。 但是这种里面套了 2 层 map 如果换成数组的话感觉会是 map 套一个数组然后数组里再套一个数组😂
接口就是这个时候用的鸭
我所在的公司,要是谁这么设计结构,我要杀人的。
一开始也是想到用 interface 的,但是一想到用的时候要断言 就想直接定义好得了。。。
{
“android”:{
“version”:“1.01”,
“sons”:[
{
“version”:101,
“val”:0
},
{
“version”:102,
“val”:1
}
]
}
}
楼上的牛 p
当然,我很乐意帮助你解答关于Golang数据结构的问题。
在Golang中,数据结构是编程的基石,用于有效地存储、组织和管理数据。常见的Golang数据结构包括数组、切片(slice)、映射(map)、结构体(struct)以及通道(channel)等。
-
数组:具有固定长度和相同类型元素的集合。数组的长度是其类型的一部分,因此数组的长度在声明后不能改变。
-
切片:基于数组的一种抽象,提供了一种灵活的方式来处理数组。切片可以动态增长和缩小,非常适合处理不确定长度的数据。
-
映射:也称为哈希表或字典,是一种存储键值对的数据结构。映射允许通过键快速查找、插入和删除元素。
-
结构体:用户自定义的数据类型,可以包含多个不同类型的字段。结构体非常适合表示具有多个属性的复杂对象。
-
通道:Golang特有的数据结构,用于在goroutines之间传递数据。通道提供了一种安全的方式来并发地处理数据,避免了数据竞争和条件竞争。
选择适当的数据结构对于提高程序的性能和可读性至关重要。在解决特定问题时,考虑数据的访问模式、存储需求以及并发性等因素,可以帮助你选择最合适的数据结构。
如果你有更具体的问题,比如关于如何使用某种数据结构或解决某个特定的编程问题,请提供更多详细信息,我很乐意进一步帮助你。