// code_21_struct_interface_firsttime project main.go
package main
import (
"fmt"
)
/*
1)接口interface是一個(gè)自定義類型,接口類型具體描述了一系列方法的集合。
2)接口類型是一種抽象的類型,它不會(huì)暴露出它代表的對(duì)象的內(nèi)部值的結(jié)構(gòu)和這個(gè)對(duì)象支持的基礎(chǔ)操作的結(jié)合,
他們只會(huì)展示出他們自己的方法。
因此接口類型不能將其實(shí)例化。
3)Go通過(guò)接口實(shí)現(xiàn)了鴨子類型(duck-typing)
*/
type Humaner interface {
SayHi()
//1)一般以er結(jié)尾
//2)接口只有方法聲明,沒(méi)有實(shí)現(xiàn),沒(méi)有數(shù)據(jù)字段
//3)接口可以匿名嵌入其他接口,或嵌入到結(jié)構(gòu)中
}
type Student struct {
name string
score float64
}
//Student實(shí)現(xiàn)SayHi()方法
func (s *Student) SayHi() {
fmt.Printf("Student[%s,%f] say hi!!!\n", s.name, s.score)
}
type Teacher struct {
name string
group string
}
func (t *Teacher) SayHi() {
fmt.Printf("Teacher[%s,%s] say hi!!!\n", t.name, t.group)
}
type MyStr string
func (str MyStr) SayHi() {
fmt.Printf("MyStr[%s] say hi!", str)
}
func WhoSayHi(i Humaner) {
i.SayHi()
}
func main() {
//接口的實(shí)現(xiàn):1)接口是用來(lái)定義行為的類型。
//2)這些被定義的行為不由接口直接實(shí)現(xiàn),而是通過(guò)方法由用戶定義的類型實(shí)現(xiàn)。
//3)一個(gè)實(shí)現(xiàn)了這些方法的具體類型是這個(gè)接口類型的實(shí)例。
//4)如果用戶定義的類型實(shí)現(xiàn)了某個(gè)接口類型聲明的一組方法,那么這個(gè)用戶定義的類型的值就可以賦給這個(gè)接口類型的值。
//這個(gè)賦值會(huì)把用戶定義的類型的值存入接口類型的值。
s := &Student{"ck_god", 88.88}
t := &Teacher{"god_girl", "computer_programmer"}
var tmp MyStr = "字符對(duì)象"
s.SayHi()
t.SayHi()
tmp.SayHi()
fmt.Println("\n==============\n")
//多態(tài)--鴨子模型,調(diào)用同一接口,不同表現(xiàn)
WhoSayHi(s)
WhoSayHi(t)
WhoSayHi(tmp)
fmt.Println("\n==============\n")
x := make([]Humaner, 3)
x[0], x[1], x[2] = s, t, tmp
for _, value := range x {
value.SayHi()
}
fmt.Println("\n==============\n")
}
運(yùn)行結(jié)果:
創(chuàng)新互聯(lián)主營(yíng)伊川網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,重慶APP軟件開(kāi)發(fā),伊川h5小程序開(kāi)發(fā)搭建,伊川網(wǎng)站營(yíng)銷推廣歡迎伊川等地區(qū)企業(yè)咨詢
Student[ck_god,88.880000] say hi!!!
Teacher[god_girl,computer_programmer] say hi!!!
MyStr[字符對(duì)象] say hi!
==============
Student[ck_god,88.880000] say hi!!!
Teacher[god_girl,computer_programmer] say hi!!!
MyStr[字符對(duì)象] say hi!
==============
Student[ck_god,88.880000] say hi!!!
Teacher[god_girl,computer_programmer] say hi!!!
MyStr[字符對(duì)象] say hi!
==============
當(dāng)前文章:Go中interface接口初體驗(yàn)之參數(shù)傳遞的鴨子形態(tài)
當(dāng)前URL:http://muchs.cn/article24/ipihce.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化、Google、、網(wǎng)站制作、App開(kāi)發(fā)、網(wǎng)站設(shè)計(jì)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)