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)这也是为结构声明的唯一方法reverse``reverse``sort.Interface
(j,i)
(i,j)
reverse``reverse``sort.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结构。
// Reverse returns the reverse order for data. func Reverse(data Interface) Interface { return &reverse{data} }
如果您认为如果这种方法不可行,您将不得不做什么,那么真正的价值就来了。
Reverse
任何这种更改都需要跨越数千个想要使用标准反向功能的包的更多行代码。