3 回答

TA贡献1880条经验 获得超4个赞
请参阅“切片:用法和内部原理”
var av = []int{1,5,2,3,7}
那是一个切片,而不是数组。
切片字面量的声明与数组字面量的声明一样,只是您省略了元素计数。
这就解释了为什么sort函数将修改切片所引用内容的内容。
正如Kirk在下面所评论的那样,sort.Ints
如果将数组而不是切片传递给它,则会给您一个错误。
func Ints(a []int)

TA贡献1830条经验 获得超9个赞
因为您使用的是切片,而不是数组。
这是一个切片:
var av = []int{1,5,2,3,7}
这些是数组:
var av = [...]int{1,5,2,3,7}
var bv = [5]int{1,5,2,3,7}
如果您尝试编译:
var av = [...]int{1,5,2,3,7}
fmt.Println(av)
sort.Ints(av)
fmt.Println(av)
,您将得到一个错误:
不能在函数参数中使用av([5] int)作为[] int类型
作为sort.Ints期望接收slice [] int。

TA贡献1806条经验 获得超8个赞
[]int{1,5,2,3,7}不是数组。数组的类型具有其长度,例如[5]int{1,5,2,3,7}。
复制切片并对其进行排序:
a := []int{1,5,2,3,7}
sortedA := make([]int, len(a))
copy(sortedA, a)
sort.Ints(sortedA)
fmt.Println(a)
fmt.Println(sortedA)
- 3 回答
- 0 关注
- 282 浏览
添加回答
举报