码迷,mamicode.com
首页 > 其他好文 > 详细

Go基础:接口相关

时间:2016-09-14 12:33:09      阅读:112      评论:0      收藏:0      [点我收藏+]

标签:

 

//  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基础:接口相关

标签:

原文地址:http://www.cnblogs.com/Wolfanature/p/5871228.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!