数组:是同一种数据类型的固定长度的序列。
数组定义:var a [len]int,比如:var a[5]int
长度是数组类型的一部分,因此,var a[5] int和var a[10]int是不同的类型
数组可以通过下标进行访问,下标是从0开始,最后一个元素下标是:len-1
for i := 0; i < len(a); i++ {
}
访问越界,如果下标在数组合法范围之外,则触发访问越界,会panic
数组是值类型,因此改变副本的值,不会改变本身的值
arr2 := arr1 arr2[2] = 100
不能改变数组本身的值
package main
import (
"fmt"
)
func modify(arr [5]int) {
arr[0] = 100
fmt.Println("arr",arr)
return
}
func main() {
var a [5]int
modify(a)
for i := 0; i < len(a); i++ {
fmt.Println(a[i])
}
}
使用指针改变数组的值
package main
import (
"fmt"
)
func modify(arr *[5]int) { //*[5]int 表示需要传入的值是地址
(*arr)[0] = 100
fmt.Println("arr",arr)
return
}
func main() {
var a [5]int
modify(&a)
for i := 0; i < len(a); i++ {
fmt.Println(a[i])
}
}
数组的初始化
var age0 [5]int = [5]int{1,2,3}
var age1 = [5]int{1,2,3,4,5}
var age2 = […]int{1,2,3,4,5,6}
var str = [5]string{3:”hello world”, 4:”tom”} #指定具体索引的值
多维数组
var age [5][3]int //定义一个五行三列的数组
var f [2][3]int = [...][3]int{{1, 2, 3}, {7, 8, 9}} //定义一个两行三列的数组并初始化
简写
var f = [...]int{{7,8,9},{1,2,3}}
多维数组遍历
方式一
package main
import (
"fmt"
)
func main() {
var f [2][3]int = [...][3]int{{1, 2, 3}, {7, 8, 9}}
for k1, v1 := range f {
for k2, v2 := range v1 {
fmt.Printf("(%d,%d)=%d ", k1, k2, v2)
}
fmt.Println()
}
}
package main
import (
"fmt"
)
func main(){
//var f [2][3]int =[2][3]int{{1,1,2},{3,4,5}}
var f = [...][3]int{{1, 2, 3}, {7, 8, 9}}
fmt.Println(f)
for index,val :=range f{
//fmt.Println(index,val)
for k1,k2:=range val{
fmt.Println(index,k1,k2)
}
}
}
方式二
package main
import (
"fmt"
)
func main(){
//var f [2][3]int =[2][3]int{{1,1,2},{3,4,5}}
var arr = [...][3]int{{1, 2, 3}, {7, 8, 9}}
fmt.Println(arr)
// for index,val :=range f{
// //fmt.Println(index,val)
// for k1,k2:=range val{
// fmt.Println(index,k1,k2)
// }
// }
for i := 0; i < len(arr); i++ {
for j := 0; j < len(arr[i]); j++ {
fmt.Printf("%v ",arr[i][j])
}
fmt.Println()
}
}
原文:https://www.cnblogs.com/weidaijie/p/11429540.html