即使在清贫的岁月,也不能失去对幸福美好的向往,那些摆脱平庸的梦总能编制我们简单的生活,为我们简单的时光点缀希望。不能说我们总要多热爱生活,但总要有一颗懂得欣赏和珍惜的心。 from《布鲁克林有棵树》
引用于:http://wufazhuce.com/one/1358
- 数组声明必须指明长度[number]或者用[...]声明告之Go自行计算长度。
- 数组作为形参传入函数,如果需要改变原数组元素,必须以指针类型传递。否则为值传递,是无法影响原数组元素。
- 数组可以用 常规for循环 或者 for ... range 遍历数组元素。
- 支持多维数组。
/*
值传递:
函数内部操作的形参变量其实是原数组的copy,
意味着形参又申请了一块内存,存储的内容与原数组相同而已。
形参变量的值发生改变,不会影响原数组。
*/
func changeArr(arr [5]int) {
arr[3] = 4
fmt.Println(arr[3]) //4
}
/*
指针传递:
函数内部操作的形参变量与原数组指向的都是同一块内存区域,
形参变量的值发生改变,会影响原数组。
*/
func changeArrByPointer(arr *[5]int) {
arr[3] = 4
fmt.Println(arr[3]) //4
}
func main() {
arrA := [5]int{1, 2, 3}
fmt.Println(arrA[3]) //0
changeArr(arrA)
fmt.Println(arrA[3]) //原数组[3]的值没有发生变化,依然是0。
changeArrByPointer(&arrA)
fmt.Println(arrA[3]) ////原数组[3]的值发生变化,被修改为4。
//利用range遍历数组
for i, v := range arrA {
fmt.Printf("arrA[%d]=%d\n", i, v)
}
//利用下标遍历数组
for i, j := 0, len(arrA); i < j; i++ {
fmt.Printf("arrA[%d]=%d\n", i, arrA[i])
}
}
网友评论