数组是具有相同唯一类型的一组以编号且长度固定的数据项序列。
- 数据的长度是固定的,声明一个数组时需要指定它的长度,一旦指定了长度。
- 数组的声明
一个数组的表示形式为T(n)
n表示数组中元素的数量,T代表每个元素的类型。元素的数量n也是该类型的一部分。
- var variable_name [SIZE] variable_type
var balance [10] float32
func main() {
var a [3]int
fmt.Println(a)
}
- 数组中的所有元素被自动赋值为数组类型的零值
初始化数组
var balance = [5] float32{1000.0, 2.0, 3.3, 7.9, 8.8}
也可以
balance := [5]float32{1000.0, 2.0, 3.3, 7.9, 8.8}
如果数组长度不确定,可用…(三个点代替)
var balance = […]float32{1000.0, 2.0, 3.3, 7.9, 8.8}
或
balance := […]float32{1000.0, 2.0, 3.3, 7.9, 8.8}
如果数组已经设置了长度,可以通过指定下标来初始化元素
balance := [5]float32{1:2.0, 3:7.0}
func main() {
var a [3] int
a[0] = 8
a[1] = 18
a[2] = 88
fmt.Println(a)
}
数组是值类型
Go中的数组是值类型而不是引用类型
func main() {
var n [10] int
var i,j int
for i = 0; i < 10; i++ {
n[i] = i + 100
}
for j = 0; j < 10; j++ {
fmt.Printf("Element[%d] = %d\n", j, n[j])
}
}
多维数组
var variable_name [SIZE1][SIZE2]…[SIZEN] variable_type
var threedim [5] [10] [4] int
二维数组
var arrayName [x] [y] variable_type
func main() {
values := [][]int{}
row1 := []int{1, 2, 3}
row2 := []int{4, 5, 6}
values = append(values, row1)
values = append(values, row2)
fmt.Println("Row 1")
fmt.Println(values[0])
fmt.Println("Row 2")
fmt.Println(values[1])
fmt.Println("第一个元素为:")
fmt.Println(values[0][0])
}
使用range遍历数组
func main() {
a := [...]float64{67.7, 89.8, 21, 78}
sum := float64(0)
for i, v := range a {
fmt.Printf("%d the element of a is %.2f\n", i, v)
sum += v
}
fmt.Println("\nsum of all elements of a", sum)
}
多维数组
func printarray(a [3][2]string) {
for _, v1 := range a {
for _, v2 := range v1 {
fmt.Printf("%s", v2)
}
fmt.Printf("\n")
}
}
func main() {
a := [3][2]string{
{"lion", "tiger"},
{"cat", "dog"},
{"pigeon", "peacock"},
}
printarray(a)
}