Go基础:接口相关
Posted 荆南山砍柴人
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Go基础:接口相关相关的知识,希望对你有一定的参考价值。
// interface相关
package main
import ( "fmt" "math" )
// 接口,定义了method
// 该接口类型的值必须实现里面定义的method
type Abser interface{ Abs() float64 }
type MyFloat float64
type Vertex struct{ X, Y float64 }
// MyFloat实现Abs方法
func (f MyFloat) Abs() float64 {
if f < 0{ return float64(-f) } return float64(f) }
// *Vertex 实现Abs方法
func (v *Vertex) Abs() float64
{ return math.Sqrt(v.X*v.X + v.Y*v.Y)
}
func describe(i interface{})
{ fmt.Printf("%v, %T\n",i ,i) }
func main()
{ var a, b Abser
f := MyFloat(-math.Sqrt2)
fmt.Println("======f=", f)
v := Vertex{3,4}
a = f fmt.Println("======a.Abs=", a.Abs())
b = &v fmt.Println("======b.Abs=", b.Abs())
// 空的接口, 没有制定要实现的方法,可以接受任何类型
var emptyInterface interface{}
describe(emptyInterface)
emptyInterface = 12
describe(emptyInterface)
emptyInterface = "wolfan"
describe(emptyInterface)
}
以上是关于Go基础:接口相关的主要内容,如果未能解决你的问题,请参考以下文章