努力了解接口类型的目的

我最近喜欢 Go 编程语言,到目前为止我发现它很棒,但我真的很难理解接口。我已经阅读了很多关于它们的内容,但它们对我来说仍然很抽象。


我写了一小段代码,使用下面的接口:


package main


import (

  "fmt"

  "math"

)


type Circer interface {

    Circ() float64

}


type Square struct {

    side float64

}


type Circle struct {

    diam, rad float64

}


func (s *Square) Circ() float64 {

    return s.side * 4

}


func (c *Circle) Circ() float64 {

    return c.diam * math.Pi

}


func (c *Circle) Area() float64 {

    if c.rad == 0 {

        var rad = c.diam / 2

        return (rad*rad) * math.Pi

    } else {

        return (c.rad*c.rad) * math.Pi

    }

}


func main() {


    var s = new(Square)

    var c = new(Circle)


    s.side = 2

    c.diam = 10


    var i Circer = s


    fmt.Println("Square Circ: ", i.Circ())


    i = c


    fmt.Println("Circle Circ: ", i.Circ())

}

我真的看不出 Circer 界面的用途。方法已经写好了,我可以通过直接在结构上调用它们来节省两行代码,而不是使用 Circer 作为包装器。


有什么我想念的吗?我是否错误地使用了界面?任何帮助或示例表示赞赏。


ibeautiful
浏览 201回答 3
3回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go