文章目录
数组定义
定义方式1
func main() {
var emptyArrWithDefaultEle [3]int // 定义大小为3的空数组
var emptyArr []int // 定义大小为0的空数组
fmt.Println("打印emptyArrWithDefaultEle: ", emptyArrWithDefaultEle)
fmt.Println("打印emptyArr:", emptyArr)
}
输出如下
打印emptyArrWithDefaultEle: [0 0 0]
打印emptyArr: []
定义方式2
func main() {
arr1 := [...]int{1,2,3}
arr2 := [...]int{1:12, 2:13, 5:5} // 给下标为1的元素赋值12,下标为2的元素赋值13,下标为5的元素赋值5
fmt.Println("打印arr1: ", arr1)
fmt.Println("打印arr2:", arr2)
}
输出如下
打印arr1: [1 2 3]
打印arr2: [0 12 13 0 0 5]
特殊情况
func main() {
arr3 := [...]int{1,2,3, 0:6} // 同一个索引不允许重复赋值
fmt.Println("打印arr3:", arr3)
}
输出如下
duplicate index 0 in array or slice literal
定义方式3
func main() {
arr := make([]int, 3, 3) // 第一个参数为数组类型,3为数组大小size,6为容量
arr[0] = 1
arr[1] = 2
arr[2] = 3
fmt.Println("打印数组arr:", arr)
arr = append(arr, 4) // append为数组追加,会自动扩容
arr = append(arr, 5)
arr = append(arr, 6)
fmt.Println("打印数组arr:", arr)
}
数组遍历
遍历方式1
在go中,如果定义了变量不使用,编译不会通过,可以使用 "_" 代替
func main() {
arr := [...]int{5,4,3,2,1}
// index是下标,value是元素值
for index, value := range arr {
fmt.Println("index=", index, "value=",value)
}
// 只打印下标
for index := range arr {
fmt.Println("index=", index)
}
// 只打印元素值
for _, value := range arr {
fmt.Println("value=", value)
}
}
输出
index= 0 value= 5
index= 1 value= 4
index= 2 value= 3
index= 3 value= 2
index= 4 value= 1
index= 0
index= 1
index= 2
index= 3
index= 4
value= 5
value= 4
value= 3
value= 2
value= 1```
遍历方式2
func main() {
arr := [...]int{1,2,3}
for i := 0;i < len(arr);i++ {
fmt.Println("index:", i, "value:", arr[i])
}
}
输出
index: 0 value: 1
index: 1 value: 2
index: 2 value: 3