Interfaces

大家好,今天小编来为大家解答以下的问题,关于Interfaces这个很多人还不知道,现在让我们一起来看看吧!
接口类型被定义为一组方法签名 。

Interfaces

文章插图
接口类型的值可以包括实现这些方法的任何值 。
package mainimport (& 34;& 34;)type Abser interface {Abs() float64}type MyFloat float64func (f MyFloat) Abs() float64 {if f < 0 {return float64(-f)}return float64(f)}type Vertex struct {X, Y float64}func (v *Vertex) Abs() float64 {return math.Sqrt(v.X*v.X + v.Y*v.Y)}func main() {var a Abserf := MyFloat(-math.Sqrt2)v := Vertex{3, 4}a = f// a MyFloat implements Absera = &v // a *Vertex implements Abser// In the following line, v is a Vertex (not *Vertex)// and does NOT implement Abser.a = vfmt.Println(a.Abs())}
注意:第22行的示例代码中有一个毛病 。Vertex(值类型)不实现Abser , 由于Abs方法仅在*Vertex(指针类型)上定义 。
【Interfaces】关于“Interfaces”的内容,小编就分享到这里了,大家还有哪些需要补充的呢?无妨在评论区留言分享,让更多的朋友受益!您的每一个留言,和每一个赞,都是我前进的动力!喜欢的话记得收藏、分享给身旁的朋友 。