type Interface interface Len() int Less(i,j int) bool Swap(i,j int)}...type reverse struct Interface} 8 k2 `- {2 A. @& ~5 I
Interfacestruct匿名界面的含义是什么?reverse? : u0 H+ S3 T8 T" ` * m" m. P' w2 p5 b; X- X 解决方案: 1 p* m; V- C7 s+ G# Y% ]. i 这样,反向实现sort.Interface,我们可以覆盖特定的方法而不必定义所有其他方法 3 _$ L/ l$ Y- R u8 W. G
type reverse struct This embedded Interface permits Reverse to use the methods of another Interface implementation. Interface} 7 T) [; c1 e; L9 j: P, v9 K
注意如何在这里交换(j,i)而不是,即使实现了,(i,j)这也是声明结构的唯一方法reverse``reverse``sort.Interface* [: I- h' n F* c! P
// 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)} ( Z; }& H' Q+ f( M1 C8 L) ?( u
无论在这种方法中传递什么结构,我们都将其转化为新的reverse结构。# Z( K" ~; Q! n5 @8 G
// Reverse returns the reverse order for data.func Reverse(data Interface) Interface return &reverse{data}}& c" L- L9 b& d" B3 `. T
如果你认为这种方法不可行,你必须做什么,那么真正的价值就来了。 9 `3 d4 G1 n7 X; w$ z[ol]将另一个Reverse方法添加到sort.Interface?& ^4 u F6 Y. t
创建另一个反向接口? 2 e' s$ B* d3 V0 s/ ?……?[/ol]任何这种变化都需要跨越成千上万的行代码来使用标准反向功能。