请教大佬们一个 Golang Go语言数据结构问题

发布于 1周前 作者 bupafengyu 来自 Go语言

请教大佬们一个 Golang Go语言数据结构问题

假如我有一个函数计算出来的结果如下:

{
	"android": {
		"1.01": {
			"101": 0
		}
	},
	"ios": {
		"1.01": {
			"101": 0,
			"102": 2
		},
		"1.02": {
			"101": 0
		}
	}
}

其中只有androidios这 2 个 key 是已知的,里面两层的 key 及 key 的数量都是未知的

我现在只能用 map 嵌套的方式来表达这个值,即这样map[string]map[string]map[string]int

但是这样感觉可读性太差了,大佬们还有别的方式吗?

或者说是在设计上应该尽量避免掉这种情况

大佬们在实际工作中这种 map 嵌套的情况常用吗?


更多关于请教大佬们一个 Golang Go语言数据结构问题的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html

9 回复

不是大佬
应该避免这种设计,里面包裹成数组方式

更多关于请教大佬们一个 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
}
]
}
}

当然,我很乐意帮助你解答关于Golang数据结构的问题。

在Golang中,数据结构是编程的基石,用于有效地存储、组织和管理数据。常见的Golang数据结构包括数组、切片(slice)、映射(map)、结构体(struct)以及通道(channel)等。

  1. 数组:具有固定长度和相同类型元素的集合。数组的长度是其类型的一部分,因此数组的长度在声明后不能改变。

  2. 切片:基于数组的一种抽象,提供了一种灵活的方式来处理数组。切片可以动态增长和缩小,非常适合处理不确定长度的数据。

  3. 映射:也称为哈希表或字典,是一种存储键值对的数据结构。映射允许通过键快速查找、插入和删除元素。

  4. 结构体:用户自定义的数据类型,可以包含多个不同类型的字段。结构体非常适合表示具有多个属性的复杂对象。

  5. 通道:Golang特有的数据结构,用于在goroutines之间传递数据。通道提供了一种安全的方式来并发地处理数据,避免了数据竞争和条件竞争。

选择适当的数据结构对于提高程序的性能和可读性至关重要。在解决特定问题时,考虑数据的访问模式、存储需求以及并发性等因素,可以帮助你选择最合适的数据结构。

如果你有更具体的问题,比如关于如何使用某种数据结构或解决某个特定的编程问题,请提供更多详细信息,我很乐意进一步帮助你。

回到顶部