回答

收藏

具有嵌入式匿名接口的结构的含义?

技术问答 技术问答 177 人阅读 | 0 人回复 | 2023-09-12

sort 包裹:
3 W( L) B3 R$ x: Y
    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]任何这种变化都需要跨越成千上万的行代码来使用标准反向功能。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则