golang的切片和数组

  • 2022-09-05
  • 浏览 (772)

在java语言中很少提及切片的概念,golang有切片类型,go更多地使用切片类型。

数组和切片的声明方式

1.数组的声明与使用

var x [3]int

var x = [3]{10, 20, 30}

2.切片的声明

切片声明时没有指定长度或使用make声明

var x []int

var x = []{10, 20, 30}

//长度为5,容量为5的切片,因为长度是5,所以x[0]~x[5]都是有效元素,它们的初始值是0
x := make([]int, 0 10)

//长度为0,容量为10的切片,因为长度是0,所以不能直接使用索引来访问数据,但可以使用append(x, 1)来添加数据
x := make([]int, 0 10)

为什么更多地使用切片

go中很少显式地使用数据类型,更多的是使用切片类型。

这是因为数组有个特殊的限制:go认为数组的长度属于类型的一部分。这就导致定义为[3]int的数组类型不同于定义为[4]int的数组类型,也意味着数组的长度是不可变的。

由于这些限制,除非已经知道需要的长度,否则不使用数组。

0  赞