Go 中 array与 slice 的区别以及array的优势

请尝试在评论区里写下答案(如不能清楚表述,那么你可能没真正理解)。欢迎参与,为下一次求职做准备。

请在评论区留下你的答案

滴水穿石,石破天惊----晓疯子
zhaocrazy
讨论数量: 4
zhaocrazy
  • 数组是值对象,可以进行比较,可以作为map的映射键,切片不能进行比较,不可以做为map的映射键
  • 越界行为:数组在编译安全上painc ,而可以切片在运行时painc
  • 在带有切片的结构中分配空间: 数组可以,切片不可以
  • 性能:数组在访问单个元素时,比切片好
  • 数组是切片的基础,数组是一定是切片,切片不一定是数组,固定大小的切片,可以切换为数组获得较小的性能提升。
  • 数组的长度是类型的一部分,特定场景有一定意义
2年前 评论

emmmm我的第一个反应就是:切片是数组的映射,数组是切片的底层。然后其他就想不起来了

2年前 评论
  • 切片是数组的引用, 切片使用数组作为底层结构。
  • 数组是值类型,切片是引用类型,切片包含三个属性:容量(cap),长度(len)和指向底层数组的指针,数组只有一个长度属性。
  • 切片可以进行动态扩容。数组不能。
2年前 评论

不同点:

  • 内存布局不同,array一旦定义,它内存的大小就固定了,而slice的内存可以动态扩容的;
  • 值类型不通,array中保存的是具体数据的值,slice中保存的是指针(内存地址);
1年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!