01-05 数组
06 数组
1 定义
声明一个数组
func main() {
var a [3] int // 声明变量
fmt.Println(a)
var b = [3] string {"lynn","egon","mac"} // 声明赋值
fmt.Println(b)
c := [3] string {"lynn","egon", "mac"} // 声明赋值
fmt.Println(c)
}
注意:
数组是即有长度,又有数据类型,不能变化,不能扩容
数组的大小是类型的一部分,不同大小的数组不能相互赋值
数组的类型是 [长度]+类型
不指定数组长度
func main() {
a := [...] int {1,2,4,5,6,7} // 但是定义好之后数组的大小固定
fmt.Println(a)
}
注意:
定义好之后数组的大小固定
值传递和引用传递
在函数传参中“
go中的函数都是值传递,copy一份传过来,不影响原来的值,如果想引用传递,需要取指针(地址)
python中的不可变类型都是值传递,相当于copy一个值,改的值都是copy的数据,不影响原本的数据
可变类型都是引用传递,直接传递的是一个内存地址,改的值,是原本的值,影响原本的数据
数组是值类型
数组的长度len()
func main() {
a := [...] int {1,2,4,5,6,7} // 但是定义好之后数组的大小固定
b := len(a) // 求出数组的长度
fmt.Println(b)
fmt.Println(a)
}
循环数组取值
// 第一种方式:
func main() {
b := [3] string {"lynn", "egon", "mac"}
for i := 0; i < len(b); i++{
fmt.Println(b[i])
}
}
// 第二种方式
func main(){
a := [3] string {"lynn", "mac", "egon"}
for i, v := range a{ // range相当于一个函数,有两个返回值,第一个是索引,第二个是值
fmt.Println(i,v) //
}
}
注意:
第二种方式时,如果一个值去接收,默认的是索引