数组
数组是一组固定长度的序列
数组类型
数组的类型不仅和储存元素的类型有关,还和数组长度有关,不同长度的数组是不同的类型
不同类型的数组不能共用一个函数
func main() {
var a [10]int
var b [5]int
var c [5]int32
fmt.Printf("type a: %T,\ntype b: %T,\ntype c: %T", a, b, c)
}
储存数据
由于数组中储存的是值,所以直接传入函数中无法改变原来的值,需要传入地址才能修改原来的值
传值
示例:
func change(a [5]int){
fmt.Println("in change, before change", a)
a[0] = 100
fmt.Println("in change, after change", a)
}
func toChange() {
a := [5]int{0, 0, 0, 0, 0}
fmt.Println("in main, before change", a)
change(a)
fmt.Println("in main. after change", a)
}
输出结果:
in main, before change [0 0 0 0 0]
in change, before change [0 0 0 0 0]
in change, after change [100 0 0 0 0]
in main. after change [0 0 0 0 0]
main 中数组并没有改变
传引用
示例:
func change(a *[5]int){
fmt.Println("in change, before change", *a)
a[0] = 100
fmt.Println("in change, after change", *a)
}
func main() {
a := [5]int{0, 0, 0, 0, 0}