数组
基本介绍
Go 语言提供了数组类型的数据结构。
数组是具有相同唯一类型的一组已编号且长度固定的数据项序列,这种类型可以是任意的原始类型例如整形、字符串或者自定义类型。
数组元素可以通过索引(位置)来读取(或者修改),索引从0开始,第一个元素索引为 0,第二个索引为 1,以此类推。数组的下标取值范围是从0开始,到长度减1。
数组一旦定义后,大小不能更改。
基本用法
初始化
//最常规的初始化
var balance [10] float32
var balance = [5]float32{1000.0, 2.0, 3.4, 7.0, 50.0}
d := [] int{1,2,3,4,5}// 根据元素的个数,设置数组的大小
//在特定的位置插入,比如在e[4]中插入100
e := [5] int{4: 100} // [0 0 0 0 100]
//没有指定数字的默认为零
f := [] int{0: 1, 4: 1, 9: 1} // [1 0 0 0 1 0 0 0 0 1]
访问数组
单个访问
int m = arr[i]
遍历
for i:=0;i<len(arr);i++{
fmt.Println(arr[i])
}
使用range遍历数组
package main
import "fmt"
func main() {
a := [...]float64{67.7, 89.8, 21, 78}
sum := float64(0)
for i, v := range a {//range returns both the index and value
fmt.Printf("%d the element of a is %.2f\n", i, v)
sum += v
}
fmt.Println("\nsum of all elements of a",sum)
}
如果只需要值并希望忽略索引,那么可以通过使用_ blank标识符替换索引来实现这一点。
//把i改成_
for _, v := range a { //ignores index
}
多维数组
Go 语言支持多维数组,以下为常用的多维数组声明语法方式:
var variable_name [SIZE1][SIZE2]...[SIZEN]
variable_type
//如
var threedim [5][10][4]int
不多写
数组是值类型
与c语言和java不同的是,go语言中的数组是值类型而不是引用类型
**注意:**数组的大小是类型的一部分。因此[5]int和[25]int是不同的类型。因此,数组不能被调整大小。不要担心这个限制,因为切片的存在是为了解决这个问题。
package main
func main() {
a := [3]int{5, 78, 8}
var b [5]int
b = a //not possible since [3]int and [5]int are distinct types
}