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)
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Go支持在struct类型上定义的方法。area方法有一个* rect类型的接收器。可以为指针或值接收器类型定义方...
    盘木阅读 1,013评论 0 1
  • Go支持在struct类型上定义的方法。area方法有一个* rect类型的接收器。可以为指针或值接收器类型定义方...
    战隼_cbdc阅读 301评论 0 0
  • go语言的interface是个很松散的概念,类型不必明确声明实现了接口,go语言通过内部维护一个实现此接口方法的...
    MrKai平凡之路阅读 1,918评论 0 10
  • 接口interface 接口是一个或多个方法签名的集合 只要某个类型拥有该接口的所有方法签名,即算实现该接口,无需...
    kaxi4it阅读 244评论 0 0
  • 我又能否为理想而奋不顾身?人是人的未来,而我只是此刻的我。 ——题记 毕飞...
    晴天陈年阅读 386评论 0 1