Go語言實(shí)現(xiàn)類似c++中的多態(tài)功能實(shí)例
前言
Go語言作為編程語言中的后起之秀,在博采眾長的同時(shí)又不失個(gè)性,在注重運(yùn)行效率的同時(shí)又重視開發(fā)效率,不失為一種好的開發(fā)語言。在go語言中,沒有類的概念,但是仍然可以用struct+interface
來實(shí)現(xiàn)類的功能,下面的這個(gè)簡單的例子演示了如何用go來模擬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,"說:你好,世界") } 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é)
從上面的例子來看,在go中實(shí)現(xiàn)類似C++中的多態(tài)可謂是非常的簡單,只要實(shí)現(xiàn)相同的接口即可。
相關(guān)文章
GO中?分組聲明與array,?slice,?map函數(shù)
這篇文章主要介紹了GO中?分組聲明與array,slice,map函數(shù),Go語言中,同時(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ì)大家有所幫助。一起跟隨小編過來看看吧2021-05-05Go語言開發(fā)代碼自測絕佳go?fuzzing用法詳解
這篇文章主要為大家介紹了Go語言開發(fā)代碼自測絕佳go?fuzzing用法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06gorm update傳入struct對(duì)象,零值字段不更新的解決方案
這篇文章主要介紹了gorm update傳入struct對(duì)象,零值字段不更新的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-04-04