接口interface
- 接口是一個(gè)或多個(gè)方法簽名的集合
- 只要某個(gè)類型擁有該接口的所有方法簽名,即算實(shí)現(xiàn)該接口,無需顯式聲明實(shí)現(xiàn)了哪個(gè)接口鹤竭,這稱為Structural Typing
- 接口只有方法聲明,沒有實(shí)現(xiàn),沒有數(shù)據(jù)字段
- 接口可以匿名嵌入其它接口判族,或嵌入到結(jié)構(gòu)中
- 將對(duì)象賦值給接口時(shí),會(huì)發(fā)生拷貝项戴,而接口內(nèi)部存儲(chǔ)的是指向這個(gè)復(fù)制品的指針形帮,既無法修改復(fù)制品的狀態(tài),也無法獲取指針
- 只有當(dāng)接口存儲(chǔ)的類型和對(duì)象都為nil時(shí)周叮,接口才等于nil
- 接口調(diào)用不會(huì)做receiver的自動(dòng)轉(zhuǎn)換
- 接口同樣支持匿名字段方法
- 接口也可實(shí)現(xiàn)類似OOP中的多態(tài)
- 空接口可以作為任何類型數(shù)據(jù)的容器
package main
import (
"fmt"
)
type IUsb interface {
Name() string
Connect()
}
type PCconnecter struct {
name string
}
func (PCer PCconnecter) Name() string {
return PCer.name
}
func (PCer PCconnecter) Connect() {
fmt.Println("Connect", PCer.name)
}
func main() {
var a IUsb
a = PCconnecter{"myPC"}
a.Connect()
}
直通車
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者