由于 Go 使用组合系统而不是(多重)继承,我只是想知道这 3 个代码片段。Go 说他们强迫程序员使用组合。
A) 应该是(几乎)正确的 Go-Code,B) 伪 C) 伪
恕我直言,所有三个代码的结果总是相同的,除此之外,B) 和 C) 可以用于更多的东西,而 A) 迫使你坚持组合?
即使您假设 B) 在类中没有排序方法,但是 - 可以说像 A) 这样的全局并没有真正的区别 oO
一)去代码:
interface Sort
Len()
Less(i, j int) bool
Swap(i, j int)
func (qs *Sort) sort()
doTheSorting
type MyData struct {
var value int
}
func (s *MyData) Len() { ... }
func (s *MyData) Less(i, j int) bool { ... }
func (s *MyData) Swap(i, j int) { ... }
B)根据编译器的工作方式,看起来像继承,但恕我直言可以被视为嵌入式。
class Sort
public sort() { ... }
abstract Len()
abstract Less(i, j int) bool
abstract Swap(i, j int)
C)
interface SortInterface
void Len()
bool Less(i, j int)
void Swap(i, j int)
class Sort implements SortInterface
public sort() { ... }
用法 B 和 C:
class MyClass **embed** Sort
int value
void Len() { ... }
bool Less(i, j int) { ... }
void Swap(i, j int) { ... }