接下来我们来学习一下 Go 语言中数组的相关使用及常见的操作。
定义
数组是同一种数据类型元素的集合。Go 语言的数组从声明时就是确定的,使用时元素可以修改,但数组长度不可变,基本语法如下:
var 数组变量名 [元素数量]数据类型var a [3]int
说明:数组的长度必须是常量,并且一旦定义之后,长度不能变。
初始化
数组的初始化和变量一样有很多种初始化方式。
方式一
使用初始化列表来设置数组元素的值。示例如下:
func main() { var baseArray [3]int var numArray = [3]int{1, 2} var stringArray = [2]string{"杭州", "上海"}
fmt.Println(baseArray) // [0 0 0] fmt.Println(numArray) // [1 2 0] fmt.Println(stringArray) // [杭州 上海]}
从上面的示例中可以看出以下几点:
•int类型的初始化值为零。•可以指定初始化的数值,未被初始化数值的元素会初始化为该类型的默认值。
方式二
上面的方式在初始化时数组的需要提供初始值和数组长度,其实我们还可以像变量一样采用自行推断的方式,示例如下:
func main() { var baseArray [3]int var numArray = [...]int{1, 2} var stringArray = [...]string{"杭州", "北京", "上海"}
fmt.Println(baseArray) // [0 0 0] fmt.Println(numArray) // [1 2 0] fmt.Println(stringArray) // [杭州 北京 上海]}
方式三
使用指定索引值方式来初始化数组,示例如下:
func main() { var a = [...]int{1: 1, 3: 5} fmt.Println(a) // [0 1 0 5] fmt.Printf("type of a:%T\n", a) // type of a:[4]int}
遍历
遍历数组有以下两种方法,示例如下:
func main() { a := [...]string{"大王", "小王", "王炸"}
// 方式一:for 循环遍历 for i := 0; i < len(a); i++ { fmt.Println(a[i]) }
// 方式二:for range 循环遍历 for index, value := range a { fmt.Println(index, value) }}
多维数组
Go语言同样也是支持多维数组的,下面以二维数组为例来学习一下吧~
二维数组的定义
func main() { a := [...][2]int{ {11, 12}, {21, 22}, } fmt.Println(a) // [[11 12] [21 22]] fmt.Println(a[0][1]) // 12}
说明:多维数组的第一层是可以使用...来让编译器自动推导数组长度的
二维数组的遍历
func main() { a := [...][2]string{ {"杭州", "北京"}, {"上海", "深圳"}, }
for _, v1 := range a { for _, v2 := range v1 { fmt.Printf("%s\t", v2) } fmt.Println() }}
输出:
杭州 北京上海 深圳
关于数组需要注意以下几点:
•数组是值类型的,因此改变副本的值并不会改变本身的值。•数组支持“==”、“!=”操作符,因为内存总是被初始化过的。•[n]*T表示指针数组,*[n]T表示数组指针。
领取专属 10元无门槛券
私享最新 技术干货