Go如何通过“隐式”界面提高生产率,与C#的扩展方法概念相比又如何?
在Go语言教程中,他们解释了界面如何工作: Go没有课程。但是,您可以在结构类型上定义方法。该方法接收器出现在FUNC关键字和方法名之间自身的参数列表。 type Vertex struct { X, Y float64 } func (v *Vertex) Abs() float64 { return math.Sqrt(v.X*v.X + v.Y*v.Y) } 接口类型由一组方法定义。接口类型的值可以包含实现那些方法的任何值。 这是在Go中创建界面的唯一方法。Google进一步说明: 类型通过实现方法来实现接口。没有明确的意图interface声明(即声明)。 隐式接口将实现程序包与定义接口的程序包分离:两者都不依赖彼此。 它还鼓励定义精确的接口,因为您不必查找每个实现并使用新的接口名称对其进行标记。 所有这些听起来都像C#中的扩展方法,但是Go中的方法是残酷的多态的。它们将在实现它们的任何类型上运行。 Google声称这鼓励快速发展,但是为什么呢?您是否放弃了C#中的显式接口而放弃了某些东西?C#中的扩展方法能否允许人们从Go接口中获得C#的某些好处?