[Golang] 接口interface

type 類型名 struct{
    字段1 類型
    字段2 類型
}

定義接口
type interface_name interface{
    方法名 method_name1
    方法名 method_name2
    ....
}

定義結構體
type struct_name struct{

}


func(struct_name_var struct_name) method_name1() [返回類型]{
    //方法實現
}


func(struct_name_var struct_name) method_nam2() [返回類型]{
    //方法實現
}

範例:

package main

import "fmt"


type Mobile interface {
    call()
    message()
}

type Iphone struct {
}

type Samsung struct{
}

func (iphone13 Iphone) call(){
    fmt.Println("iphone13, call phone number")
}

func (iphone13 Iphone) message(){
    fmt.Println("iphone13, use message")
}

func (s22 Samsung) call(){
    fmt.Println("samsung, call phone number")
}

func (s22 Samsung) message(){
    fmt.Println("samsung, use message")
}

func main() {
    var mobile Mobile
    mobile=new(Iphone)
    mobile.call()
    mobile.message()


    var mobile2 Mobile
    mobile2=new(Samsung)
    mobile2.call()
    mobile2.message()
}

顯示

iphone13, call phone number
iphone13, use message
samsung, call phone number
samsung, use message

空接口類型

package main

import (
    "fmt"
)

func main() {
    var any interface{}
    any = 100
    fmt.Printf("value:%d type:%T \n", any, any)

    any = "aaa"
    fmt.Printf("value:%s type:%T \n", any, any)

    testFunc(100)
    testFunc("test")
}

func testFunc(par interface{}){
    fmt.Println(par)
}
value:100 type:int 
value:aaa type:string 
100
test

發佈留言