Go基礎:介面相關

來源:互聯網
上載者:User

標籤:

 

//  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基礎:介面相關

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.