Go學習筆記:匿名成員

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

開始沒搞明白啥是匿名成員,看了好幾個文章,總算明白了,至少自認為是。

為啥需要匿名成員?

得從OO說起。OO要說是現代的電腦程式設計語言中必需的部分了。不過不同的語言對於如何?OO中的各種概念做法並不一樣。Go對OO提供了支援,但採用的是一種簡潔並且直接的辦法,沒有類似於Java中的extends、implements關鍵字,而是直接用匿名成員,並通過“委派”來實現。比如下面這些代碼:


type E interface{

Start()

Stop()

Renewal(x int)

}

type W interface {

Open()

Close()

Renewal()

}

type Car struct {
E
W
}

有了這些,那麼當建立了Car的執行個體以後,就可以使用:


car.Start()
car.Stop()
car.Open()
car.Close()

和使用Car自己的方法沒任何區別。是不是有extends和implements的意思!

需要注意的是:由於存在同名方法(Renewal),就不能這樣了:

car.Renewal()//編譯錯誤

而必需是:

car.E.Renewal(5)

或者

car.W.Renewal()


看起來,有了這個匿名成員和委派,OO中的好幾個概念都包含進去了。



相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.