Go 接口

作者: SHAN某人 | 来源:发表于2017-12-23 10:35 被阅读0次
package main

import (
    "fmt"
    "math"
)

type Abser interface {   //接口类型
    Abs() float64    // 接口抽象方法,将实现与引用分离,便于扩展
}

func main() {
    var a Abser
    f := MyFloat(-math.Sqrt2)
    v := Vertex{3, 4}

    a = f  // a MyFloat 实现了 Abser
    a = &v // a *Vertex 实现了 Abser

    // 下面一行,v 是一个 Vertex(而不是 *Vertex)
    // 所以没有实现 Abser。
    //a = v

    fmt.Println(a.Abs())
}

type MyFloat float64

func (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)
}

相关文章

  • 第04天(面对对象编程)_04

    16_接口的继承.go 17_接口转换.go 18_空接口.go 19_类型断言:if.go 20_类型断言:sw...

  • go语言基础

    go语言基础 go 语言接口

  • 第05天(异常、文本文件处理)_01

    01_error接口的使用.go 02_error接口应用.go 03_显式调用panic函数.go 04_数组越...

  • Golang 学习笔记七 接口

    一、概念 《快学 Go 语言》第 9 课 —— 接口 1.接口定义Go 语言的接口类型非常特别,它的作用和 Jav...

  • Golang学习笔记-接口和错误

    接口 Go接口定义了方法后,其它类型只要实现了这些方法就是实现了接口。Go语言中接口类型的独特之处在于它是满足隐式...

  • go 接口

    https://www.jianshu.com/p/dbd4e6b4900c

  • go 接口

    空接口 断言 我们知道interface{}可以保存任意类型的数,所以我们要通过断言查询是什么类型断言的对象是空接口

  • Go 接口

  • Go 接口

    直奔主题,看一下go中的接口是啥样子

  • go 接口

    精髓 《go语言实战》5.4.3方法集。要理解方法集的含义!方法集与接口密切相关。 代码清单 5-42 展示了规范...

网友评论

    本文标题:Go 接口

    本文链接:https://www.haomeiwen.com/subject/aqifgxtx.html