Go語(yǔ)言實(shí)現(xiàn)類似c++中的多態(tài)功能實(shí)例
前言
Go語(yǔ)言作為編程語(yǔ)言中的后起之秀,在博采眾長(zhǎng)的同時(shí)又不失個(gè)性,在注重運(yùn)行效率的同時(shí)又重視開(kāi)發(fā)效率,不失為一種好的開(kāi)發(fā)語(yǔ)言。在go語(yǔ)言中,沒(méi)有類的概念,但是仍然可以用struct+interface
來(lái)實(shí)現(xiàn)類的功能,下面的這個(gè)簡(jiǎn)單的例子演示了如何用go來(lái)模擬c++中的多態(tài)的行為。
示例代碼
package main import "os" import "fmt" type Human interface { sayHello() } type Chinese struct { name string } type English struct { name string } func (c *Chinese) sayHello() { fmt.Println(c.name,"說(shuō):你好,世界") } func (e *English) sayHello() { fmt.Println(e.name,"says: hello,world") } func main() { fmt.Println(len(os.Args)) c := Chinese{"汪星人"} e := English{"jorn"} m := map[int]Human{} m[0] = &c m[1] = &e for i:=0;i<2;i++ { m[i].sayHello() } }
總結(jié)
從上面的例子來(lái)看,在go中實(shí)現(xiàn)類似C++中的多態(tài)可謂是非常的簡(jiǎn)單,只要實(shí)現(xiàn)相同的接口即可。
相關(guān)文章
GO中?分組聲明與array,?slice,?map函數(shù)
這篇文章主要介紹了GO中?分組聲明與array,slice,map函數(shù),Go語(yǔ)言中,同時(shí)聲明多個(gè)常量、變量,或者導(dǎo)入多個(gè)包時(shí),可采用分組的方式進(jìn)行聲明,下面詳細(xì)介紹需要的小伙伴可以參考一下2022-03-03golang 實(shí)現(xiàn)Location跳轉(zhuǎn)方式
這篇文章主要介紹了golang 實(shí)現(xiàn)Location跳轉(zhuǎn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-05-05Go語(yǔ)言實(shí)現(xiàn)本地緩存的策略詳解
今天給大家分享的是Go語(yǔ)言本地緩存的一些內(nèi)容,主要是結(jié)合bigcache和fastcache兩個(gè)優(yōu)秀的開(kāi)源代碼庫(kù),總結(jié)一些設(shè)計(jì)思路和感悟,文章通過(guò)代碼示例介紹的非常詳細(xì),需要的朋友可以參考下2023-07-07Go?常見(jiàn)設(shè)計(jì)模式之單例模式詳解
單例模式是設(shè)計(jì)模式中最簡(jiǎn)單的一種模式,單例模式能夠確保無(wú)論對(duì)象被實(shí)例化多少次,全局都只有一個(gè)實(shí)例存在,在Go?語(yǔ)言有多種方式可以實(shí)現(xiàn)單例模式,所以我們今天就來(lái)一起學(xué)習(xí)下吧2023-07-07Go語(yǔ)言開(kāi)發(fā)代碼自測(cè)絕佳go?fuzzing用法詳解
這篇文章主要為大家介紹了Go語(yǔ)言開(kāi)發(fā)代碼自測(cè)絕佳go?fuzzing用法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06gorm update傳入struct對(duì)象,零值字段不更新的解決方案
這篇文章主要介紹了gorm update傳入struct對(duì)象,零值字段不更新的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-04-04