Go interface satisfaction (接口 滿足)最簡教程

引言

經(jīng)典的《Go程序設(shè)計(jì)語言》是一本好書,很多概念都講的非常清晰基括,但是這又是一本比較深的書蛇受,很多例子對于我這樣的初學(xué)者有點(diǎn)復(fù)雜了野来。在我看來Interface是Go代碼重用的一個(gè)非常好的設(shè)計(jì),從PHP過來的人肯定體會(huì)到過有些重復(fù)是可以避免的疾牲。Go設(shè)計(jì)的Interface就是要免掉一些重復(fù)植捎。有人說好的設(shè)計(jì)應(yīng)該是面向接口的設(shè)計(jì)⊙羧幔《Go程序設(shè)計(jì)語言》中的介紹的Interface的例子有點(diǎn)看不明白焰枢,自己寫一個(gè)代碼。

場景

開學(xué)了舌剂,幾個(gè)老師和一群學(xué)生都要進(jìn)行自我介紹济锄,當(dāng)然我們規(guī)定他們做機(jī)械化介紹,免掉一些自由發(fā)揮霍转。先設(shè)置老師和學(xué)生的type荐绝,然和兩個(gè)類別都定義 introduce_self()函數(shù)

type Student struct{
    name string
    age int
    grade int
}

type Teacher struct{
    name string
    age int
    band int
}

func (s Student) introduce_self() string{
    return "my name is " + s.name + " I am a student"
} 

func (t Teacher) introduce_self() string{
    return "my name is " + t.name + " I am s teacher"
}

Interface 定義及應(yīng)用

定義接口的好處是,用同一個(gè)變量名谴忧,可以完成不同類型對象的行為控制很泊,對于數(shù)組(或切片)迭代,是最為實(shí)用的沾谓。

type talkable interface{   // 定義接口名稱
    introduce_self() string
}

func self_talk(p talkable) string { // 定義接口類型的變量p
    return p.introduce_self()
}

func main(){
...
    var jhon = Student{"John",12,4}
    var rose = Teacher{"Carol", 35,1}
    var words []string

    words=append(words, self_talk(jhon) )
// 在調(diào)用self_talk時(shí)委造,隱含了 接口滿足表達(dá)式,  p=john
// 也就是 jhon 滿足p接口,也就是jhon 含有p接口中定義的方法
...
}

完整的均驶,可以通過編譯的代碼

package main
import(
    "fmt"
)
type talkable interface{
    introduce_self() string
}

type Student struct{
    name string
    age int
    grade int
}

type Teacher struct{
    name string
    age int
    band int
}

func (s Student) introduce_self() string{
    return "my name is " + s.name + " I am a student"
} 

func (t Teacher) introduce_self() string{
    return "my name is " + t.name + " I am s teacher"
}

func self_talk(p talkable) string {
    return p.introduce_self()
}

func main(){
    
    var jhon = Student{"John",12,4}
    var rose = Teacher{"Carol", 35,1}
    var words []string

    words=append(words, self_talk(jhon) )
    words=append(words, self_talk(rose))

    var people []talkable // 接口類型的數(shù)組切片昏兆,只要對象滿足talkabe,就可以填入
    people =append(people, Student{"Tom",13,3})
    people =append(people, Teacher{"Richard",40,1})

    for i:=0;i<len(people);i++{
        words=append(words, self_talk(people[i]) )
    }
    
    for i:=0;i<len(words);i++{
        fmt.Printf("%d,%s\n",i+1,words[i])
    }

}

本篇完

初學(xué)者,請多指教
原創(chuàng)內(nèi)容妇穴,轉(zhuǎn)載請注明 copywrite threadtag

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末爬虱,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子腾它,更是在濱河造成了極大的恐慌跑筝,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,744評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件瞒滴,死亡現(xiàn)場離奇詭異曲梗,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)妓忍,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,505評論 3 392
  • 文/潘曉璐 我一進(jìn)店門虏两,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人世剖,你說我怎么就攤上這事定罢。” “怎么了旁瘫?”我有些...
    開封第一講書人閱讀 163,105評論 0 353
  • 文/不壞的土叔 我叫張陵祖凫,是天一觀的道長。 經(jīng)常有香客問我酬凳,道長蝙场,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,242評論 1 292
  • 正文 為了忘掉前任粱年,我火速辦了婚禮售滤,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘台诗。我一直安慰自己完箩,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,269評論 6 389
  • 文/花漫 我一把揭開白布拉队。 她就那樣靜靜地躺著弊知,像睡著了一般。 火紅的嫁衣襯著肌膚如雪粱快。 梳的紋絲不亂的頭發(fā)上秩彤,一...
    開封第一講書人閱讀 51,215評論 1 299
  • 那天叔扼,我揣著相機(jī)與錄音,去河邊找鬼漫雷。 笑死瓜富,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的降盹。 我是一名探鬼主播与柑,決...
    沈念sama閱讀 40,096評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼蓄坏!你這毒婦竟也來了价捧?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,939評論 0 274
  • 序言:老撾萬榮一對情侶失蹤涡戳,失蹤者是張志新(化名)和其女友劉穎结蟋,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體渔彰,經(jīng)...
    沈念sama閱讀 45,354評論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡椎眯,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,573評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了胳岂。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片编整。...
    茶點(diǎn)故事閱讀 39,745評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖乳丰,靈堂內(nèi)的尸體忽然破棺而出掌测,到底是詐尸還是另有隱情,我是刑警寧澤产园,帶...
    沈念sama閱讀 35,448評論 5 344
  • 正文 年R本政府宣布汞斧,位于F島的核電站,受9級特大地震影響什燕,放射性物質(zhì)發(fā)生泄漏粘勒。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,048評論 3 327
  • 文/蒙蒙 一屎即、第九天 我趴在偏房一處隱蔽的房頂上張望庙睡。 院中可真熱鬧,春花似錦技俐、人聲如沸乘陪。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,683評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽啡邑。三九已至,卻和暖如春井赌,著一層夾襖步出監(jiān)牢的瞬間谤逼,已是汗流浹背贵扰。 一陣腳步聲響...
    開封第一講書人閱讀 32,838評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留流部,地道東北人戚绕。 一個(gè)月前我還...
    沈念sama閱讀 47,776評論 2 369
  • 正文 我出身青樓,卻偏偏與公主長得像贵涵,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子恰画,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,652評論 2 354

推薦閱讀更多精彩內(nèi)容