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) // 
	}
}

注意:

​ 第二种方式时,如果一个值去接收,默认的是索引

posted @ 2019-12-18 12:44  tianzhh_lynn  阅读(49)  评论(0编辑  收藏  举报