sort 包:
sort
type Interface interface { Len() int Less(i, j int) bool Swap(i, j int) } ... type reverse struct { Interface }
Interfacestruct中的匿名接口是什么意思reverse?
Interface
reverse
通过这种方式,反向实现了sort.Interface,我们可以覆盖特定的方法而不必定义所有其他方法
sort.Interface
type reverse struct { // This embedded Interface permits Reverse to use the methods of // another Interface implementation. Interface }
请注意,这里是如何交换(j,i)而不是交换的(i,j),这也是为struct声明的唯一方法,reverse即使reverse实现sort.Interface
(j,i)
(i,j)
// 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结构。
// Reverse returns the reverse order for data. func Reverse(data Interface) Interface { return &reverse{data} }
真正的价值在于,如果您认为如果无法采用这种方法,该怎么办。
Reverse
任何此类更改都需要跨数千个要使用标准反向功能的软件包的许多行代码。