go 语言 数组、切片和映射区别

数组:

  • 数组是固定长度的序列,其元素类型相同。
  • 数组的大小是类型的一部分,因此 [5]int 和 [10]int 是不同的类型。
  • 数组在内存中是连续的,因此访问数组元素非常快。
  • 由于数组长度是固定的,因此它们通常不如切片灵活。
  • 数组可以作为函数参数传递,但它们是按值传递的,这意味着如果函数修改了数组,原始数组不会被改变。

 

切片:

  • 切片是对数组的抽象,提供了动态大小的、灵活的长度和容量的序列。
  • 切片引用底层数组的一部分或全部,并有自己的长度和容量。
  • 切片的长度可以改变(直到其容量),而容量是切片底层数组从切片开始位置到数组末尾的元素数量。
  • 切片在Go语言中非常常用,因为它们提供了数组的动态和灵活的行为,同时保持了高效的内存使用。
  • 切片在函数间传递时是按引用传递的,因此函数可以修改切片的内容并反映到原始切片上。

 

映射:

  • 映射是无序的键值对集合。
  • 键(key)必须是可比较的(如字符串、整数等),而值(value)可以是任意类型。
  • 映射用于存储通过键快速访问的数据。
  • 映射在内存中的存储不是连续的,因此通过键访问元素通常比通过索引访问数组或切片元素要慢一些。
  • 映射在函数间传递时是按引用传递的。

 

 

 

已闻君,诸事安康。 遇佳人,不久婚嫁。 已闻君,得偿所想。料得是,卿识君望

posted @ 2023-06-02 07:48  方达达  阅读(1)  评论(0编辑  收藏  举报