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基础:接口相关的主要内容,如果未能解决你的问题,请参考以下文章

Go基础之函数方法接口包

Go基础之函数方法接口包

Go基础结构体方法封装结构体内嵌接口

Go基础系列:Go接口

go语言(golang)学习之路

Go基础之--接口