登录
首页 >  Golang >  Go问答

如何在 Go 中反转数组?

来源:Golang技术栈

时间:2023-04-23 18:57:46 143浏览 收藏

从现在开始,我们要努力学习啦!今天我给大家带来《如何在 Go 中反转数组?》,感兴趣的朋友请继续看下去吧!下文中的内容我们主要会涉及到golang等等知识点,如果在阅读本文过程中有遇到不清楚的地方,欢迎留言呀!我们一起讨论,一起学习!

问题内容

http://play.golang.org/p/W70J4GU7nA

  s := []int{5, 2, 6, 3, 1, 4}
  sort.Reverse(sort.IntSlice(s))
  fmt.Println(s)
  // 5, 2, 6, 3, 1, 4

很难理解 func Reverse(data Interface) Interface 中的含义。

如何反转数组?我不需要排序。

正确答案

通常,要对整数数组进行排序,请将它们包装在 中IntSlice,它定义了方法LenLessSwap。这些方法又被sort.Sort. 它的作用是sort.Reverse它采用定义LenLess和的现有类型Swap,但它用Less一个始终与底层相反的新方法替换该方法Less

type reverse struct {
    // This embedded Interface permits Reverse to use the methods of
    // another Interface implementation.
    Interface
}

// Less returns the opposite of the embedded implementation's Less method.
func (r reverse) Less(i, j int) bool {
    return r.Interface.Less(j, i)
}

// Reverse returns the reverse order for data.
func Reverse(data Interface) Interface {
    return &reverse{data}
}

所以当你写的时候sort.Reverse(sort.IntSlice(s)),发生的事情是你得到了这个新的、“修改过的” IntSlice,它的Less方法被替换了。因此,如果您调用sort.Sort它,它调用Less,它将按降序排序。

本篇关于《如何在 Go 中反转数组?》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注golang学习网公众号!

声明:本文转载于:Golang技术栈 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>