为了账号安全,请及时绑定邮箱和手机立即绑定

sort.Sort 不修改数组

sort.Sort 不修改数组

Go
LEATH 2023-06-26 17:06:28
以下代码应创建一个 ints ( ) 数组a并对其进行排序,但 sort.Sort 似乎并未修改该变量。package mainimport (    "fmt"    "sort")type IntArray [5]inttype byNum [5]intfunc (s byNum) Len() int {    return len(s)}func (s byNum) Swap(i, j int) {    s[i], s[j] = s[j], s[i]}func (s byNum) Less(i, j int) bool {    return s[i] < s[j]}func main() {    a := IntArray{5,3,4,1,2}    fmt.Println(a)    sort.Sort(byNum(a))    fmt.Println(a)}https://play.golang.org/p/bhcwgosqvis[5 3 4 1 2][5 3 4 1 2]Program exited.为什么这不起作用?
查看完整描述

1 回答

?
PIPIONE

TA贡献1829条经验 获得超9个赞

问题在于 Swap 方法正在更改参数数组,而不是调用者中的数组。

通过将 byNum 声明为切片来修复:

type byNum []int
...

sort.Sort(byNum(a[:]))

在此调用中,切片参数的支持数组是您要修改的数组。

在操场上运行它


查看完整回答
反对 回复 2023-06-26
  • 1 回答
  • 0 关注
  • 77 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信