第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

Golang OOP 說明

Golang OOP 說明

Go
大話西游666 2023-03-29 15:14:51
我有兩個(gè)用 編寫的接口go,一個(gè)是另一個(gè)的子集type x interface {    a()}type y interface {    a()    b()}我也有一個(gè)結(jié)構(gòu),它有這樣的方法type z struct {    some string}func (s z) a() {    // do stuff}func (s z) b() {    // do stuff}我對(duì)此有幾個(gè)問題,即:我說 z 實(shí)現(xiàn)了 x 和 y 是對(duì)的嗎?以這種方式實(shí)現(xiàn)多個(gè)接口的一個(gè)結(jié)構(gòu)的 OOP 概念是什么?我試著問了幾位同事,他們似乎傾向于polymorphism作為答案,雖然他們不太確定。多態(tài)性的維基百科條目說它“是為不同類型的實(shí)體提供單一接口”,但這對(duì)我來說就像是直接相反。我還在其他來源(例如this)中發(fā)現(xiàn) Go “不是真正的 OOP 語言”。
查看完整描述

4 回答

?
GCT1015

TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超4個(gè)贊

是的,z實(shí)現(xiàn)了x和y。您可以通過使用變量聲明將具體類型分配給接口類型來證明:


var _ x = z{}

var _ y = z{}

這為您提供了編譯時(shí)檢查,以確保類型實(shí)現(xiàn)了您想要的接口。


作為旁注,如果您明確想y成為x + some more methods,那么這樣寫是有意義的:


interface y {

    x

    b()

}

關(guān)于命名,如果一個(gè)類型實(shí)現(xiàn)了兩個(gè)共享某些方法的不同接口,我會(huì)這樣稱呼它——一個(gè)實(shí)現(xiàn)兩個(gè)不同接口的類型。一個(gè)接口是另一個(gè)接口的子集并不重要。


此外,在 Go 中,類型(以及非結(jié)構(gòu)類型)在定義時(shí)不與接口相關(guān)聯(lián)。即使一個(gè)類型不是為了實(shí)現(xiàn)某個(gè)接口而編寫的,您也可以通過定義具有不同名稱和/或該類型的不同方法組合的新接口來使其實(shí)現(xiàn)任意數(shù)量的接口。這使得為概念命名變得更加困難——當(dāng)接口稍后可能在另一個(gè)包中定義時(shí),您如何在類型定義時(shí)知道名稱?


查看完整回答
反對(duì) 回復(fù) 2023-03-29
?
慕虎7371278

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超4個(gè)贊

一開始我很難掌握 Go 接口的竅門。我有多年的 Java、C++、Python 經(jīng)驗(yàn)……恕我直言,充分利用 Go 和任何其他新語言的最佳方法是不要用 Go 語法編寫 Java 或 C++。了解 Go 中的事物是如何工作的并使用它。術(shù)語可能不是精確的一對(duì)一映射,但這無關(guān)緊要。

將 Go 接口視為一組對(duì)某些數(shù)據(jù)組(結(jié)構(gòu))進(jìn)行操作的方法簽名。 類似于Java 接口只是類上的一組方法簽名。主要區(qū)別在于,在 Go 中,你不需要指定結(jié)構(gòu)implements接口,語言會(huì)為你做。如果您在結(jié)構(gòu)上指定方法,它會(huì)自動(dòng)實(shí)現(xiàn)接口。


查看完整回答
反對(duì) 回復(fù) 2023-03-29
?
墨色風(fēng)雨

TA貢獻(xiàn)1853條經(jīng)驗(yàn) 獲得超6個(gè)贊

您說 z 實(shí)現(xiàn)了這兩個(gè)接口是正確的。

接口本身是一個(gè)通用的編程概念,并不局限于面向?qū)ο蟮恼Z言。一些面向?qū)ο蟮恼Z言(如 Java 和 Go)提供了一種定義和實(shí)現(xiàn)接口的方法,而其他語言則沒有。

它實(shí)際上是一種多態(tài)性,因?yàn)槟f的是一組特定的函數(shù)或方法可能由不同的數(shù)據(jù)結(jié)構(gòu)類型實(shí)現(xiàn)。正如維基百科文章所建議的那樣。它也可以被認(rèn)為是類型抽象。

Go 能夠支持面向?qū)ο蠛兔嫦蜻^程的編程風(fēng)格。它被認(rèn)為是一種面向?qū)ο蟮木幊陶Z言。

Go 是一種強(qiáng)類型語言,接口允許 Go 程序員通過他們的方法定義類型,以及通過數(shù)據(jù)結(jié)構(gòu)定義類型的其他方式。


查看完整回答
反對(duì) 回復(fù) 2023-03-29
?
慕森卡

TA貢獻(xiàn)1806條經(jīng)驗(yàn) 獲得超8個(gè)贊

Go 中沒有繼承的概念。它促進(jìn)了組合而不是繼承。

來自 Go 常見問題解答:

沒有類型層次結(jié)構(gòu):類型就是這樣,它們不必聲明它們的關(guān)系。這些簡化使 Go 既具有表現(xiàn)力又易于理解,而不會(huì)犧牲復(fù)雜性。


查看完整回答
反對(duì) 回復(fù) 2023-03-29
  • 4 回答
  • 0 關(guān)注
  • 169 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)