Go 接口

直奔主題,看一下go中的接口是啥樣子

package main

import "fmt"

type Point struct {
    X, Y float64
}

type IInstance interface {
    Instance() float64
}

type Path []Point

func (p Path) Instance() float64 {
    return 123
}

func main() {
    var i IInstance
    p := Path{{1,2,},{3,4}}
    i = p
    fmt.Println(i.Instance())
}
package main

import (
    "math"
    "fmt"
)

type Point struct {
    X,Y float64
}

func (p *Point) Distance2Point(q Point) float64 {
    return math.Hypot(q.X-p.X, q.Y-p.Y)

}
func (p *Point) Distance() float64 {
    return math.Hypot(p.X, p.Y)
}

type IDistance interface {
    Distance() float64
}

type Path []*Point

func (p Path) Distance() float64 {
    var sum float64
    for i := 0; i < len(p)-1; i++ {
        sum += p[i].Distance2Point(*p[i+1])
    }
    return sum
}
func print(p IDistance) {
    fmt.Println(p.Distance())
}

func main() {
    
    var path Path
    path = make([]*Point, 3)
    p1 := &Point{X:1, Y:2}
    p2 := &Point{X:3, Y:4}
    p3 := &Point{X:5, Y:6}
    path[0] = p1
    path[1] = p2
    path[2] = p3

    var i IDistance
    i = p1
    fmt.Println(i.Distance())

    i = p2
    fmt.Println(i.Distance())

    i = path
    fmt.Println(i.Distance())
    print(path)
    print(p1)
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Go支持在struct類型上定義的方法。area方法有一個(gè)* rect類型的接收器??梢詾橹羔樆蛑到邮掌黝愋投x方...
    盤木閱讀 1,055評論 0 1
  • Go支持在struct類型上定義的方法。area方法有一個(gè)* rect類型的接收器。可以為指針或值接收器類型定義方...
    戰(zhàn)隼_cbdc閱讀 325評論 0 0
  • go語言的interface是個(gè)很松散的概念,類型不必明確聲明實(shí)現(xiàn)了接口,go語言通過內(nèi)部維護(hù)一個(gè)實(shí)現(xiàn)此接口方法的...
    MrKai平凡之路閱讀 1,985評論 0 10
  • 接口interface 接口是一個(gè)或多個(gè)方法簽名的集合 只要某個(gè)類型擁有該接口的所有方法簽名,即算實(shí)現(xiàn)該接口,無需...
    kaxi4it閱讀 269評論 0 0
  • 我又能否為理想而奮不顧身?人是人的未來,而我只是此刻的我。 ——題記 畢飛...
    晴天陳年閱讀 448評論 0 1

友情鏈接更多精彩內(nèi)容