数组
Go 语言提供了数组类型的数据结构。
数组是具有相同唯一类型的一组已编号且长度固定的数据项序列,这种类型可以是任意的原始类型例如整形、字符串或者自定义类型。
相对于去声明number0, number1, ..., and number99的变量,使用数组形式numbers[0], numbers[1] ..., numbers[99]更加方便且易于扩展。
数组元素可以通过索引(位置)来读取(或者修改),索引从0开始,第一个元素索引为 0,第二个索引为 1,以此类推。
一维数组
func main() {
var arr1 [5]int
arr2 := [3]int{1,3,5}
arr3 := [...]int{2,4,6,8,10}
fmt.Println(arr1,arr2,arr3)
}
运行结果如下:
初始化数组中 {} 中的元素个数不能大于 [] 中的数字。
如果忽略 [] 中的数字不设置数组大小,Go 语言会根据元素的个数来设置数组的大小
二维数组
func main() {
var grid [4][5]int
fmt.Println(grid)
}
运行结果如下:
遍历数组
方式一
func main() {
arr3 := [...]int{2,4,6,8,10}
for i := 0;i < len(arr3); i++ {
fmt.Println(arr3[i])
}
}
运行结果如下:
上面的遍历方式有点复杂,可以使用range关键字
方式二:
func main() {
arr3 := [...]int{2,4,6,8,10}
for i := range arr3{
fmt.Println(arr3[i])
}
}
运行结果如下:
获取下标和值
func main() {
arr3 := [...]int{2,4,6,8,10}
for i,v := range arr3{
fmt.Println(i,v)
}
}
运行结果如下:
只获取值
func main() {
arr3 := [...]int{2,4,6,8,10}
for _,v := range arr3{
fmt.Println(v)
}
}
运行结果如下:
为什么要使用range?
意义明确,美观
数组是值类型
func printArray(arr [5]int){
arr[0] = 100
for _,v := range arr{
fmt.Println(v)
}
}
func main() {
arr3 := [...]int{2,4,6,8,10}
printArray(arr3)
fmt.Println(arr3)
}
运行结果如下: