我发现自己对array
和slice
数据类型感到困惑。
在 Go 文档中,数组描述如下:
数组在 Go 和 C 中的工作方式之间存在重大差异。在 Go 中,
- 数组是值。将一个数组分配给另一个数组会复制所有元素。
- 特别是,如果将数组传递给函数,它将收到数组的副本,而不是指向它的指针。
- 数组的大小是其类型的一部分。[10]int 和 [20]int 类型是不同的。
职能:
与 C 家族中的所有语言一样,Go 中的所有内容都是按值传递的。也就是说,一个函数总是得到一个被传递的东西的副本,就好像有一个赋值语句将值分配给参数一样。例如,将 int 值传递给函数会生成 int 的副本,传递指针值会生成指针的副本,但不会复制它指向的数据。
sort.Ints(arrayValue)
当我将传递的变量声明为数组而不是切片时,为什么要修改它?
代码
var av = []int{1,5,2,3,7}
fmt.Println(av)
sort.Ints(av)
fmt.Println(av)
return
输出
[1 5 2 3 7]
[1 2 3 5 7]