数组声明
package main
import (
"fmt"
)
func main(){
//定义一个数组
var arr [10] int;
fmt.Println(arr);
}
使用数组字面量声明数组
package main
import (
"fmt"
)
func main(){
array := [5]int{1,2,3,4,5}
fmt.Println(array);
}
//[1 2 3 4 5]
不指定数组长度
package main
import (
"fmt"
)
func main(){
array := [...]int{1,2,3,4}
fmt.Println(array)
}
//[1 2 3 4]
上面[...]表示有go语言自动计算数组长度。
使用数组
package main
import (
"fmt"
)
func main(){
array := [...]int{1,2,3,4}
//修改数组的值
array[2] = 22
fmt.Println(array)
}
//[1 2 22 4]
如果试图给超过数组长度的位置赋值,会出错
package main
import (
"fmt"
)
func main(){
array := [...]int{1,2,3,4}
//修改数组的值
array[21] = 22
fmt.Println(array)
}
//./main.go:10:7: invalid array index 21 (out of bounds for 4-element array)
数组复制
package main
import (
"fmt"
)
func main(){
array := [...]int{1,2,3,4}
array2 := array
fmt.Println(array,array2)
}
//[1 2 3 4] [1 2 3 4]
package main
import (
"fmt"
)
func main(){
array := [...]int{1,2,3,4}
array2 := array;
array2[0] = 10;
fmt.Println(array,array2);
}
//[1 2 3 4] [10 2 3 4]
可以发现,这里更改了arra2中的元素之后,array中的元素并没有改变。
package main
import (
"fmt"
)
func main(){
array := [...]int{1,2,3,4}
array2 := &array;//注意这里的不同
array2[0] = 10;
fmt.Println(array,array2);
}
//[10 2 3 4] &[10 2 3 4]
上面这段代码,把array的地址赋值给了array2,所以在修稿array2的时候,array一中也会生效。
数组遍历
package main
import (
"fmt"
)
func main(){
array := [...]int{1,2,3,4}
for i:=0;i<len(array);i++{
fmt.Println(array[i])
}
}
/*
1
2
3
4
*/