1 回答

TA貢獻(xiàn)1862條經(jīng)驗(yàn) 獲得超6個(gè)贊
規(guī)格:方法集:
一個(gè)類型可能有一個(gè)與之關(guān)聯(lián)的方法集。接口類型的方法集就是它的接口。任何其他類型的方法集T由所有聲明為接收者類型的方法組成T。對(duì)應(yīng)指針類型 *T的方法集是所有用receiver *Tor聲明T的方法的集合(也就是包含了的方法集T)。
因此 的方法集*cncrt包括 的方法集cncrt。由于rx()是cncrt的方法集的元素,因此它也將是 in*cncrt的方法集。這意味著cncrt和*cncrt類型都實(shí)現(xiàn)了ntfc接口。
如果您有一個(gè)指針值 ( *cncrt) 并調(diào)用rx()它,則該指針將自動(dòng)取消引用,該指針將成為該rx()方法的接收者。
在您的rtnsNtfca()和rtnsNtfc()函數(shù)中,ntfc將自動(dòng)創(chuàng)建并返回一個(gè)接口值。Go 中的接口值表示為 (type;value) 對(duì)(更多詳細(xì)信息:反射定律#接口的表示)。因此,無論rtnsNtfca()與rtnsNtfc()返回一個(gè)接口值,但第一個(gè)持有類型的動(dòng)態(tài)值*cncrt和后者之一成立類型的動(dòng)態(tài)值cncrt。
并且您的第三個(gè)方法rtrnsCncrt()返回一個(gè)具體類型 ( *cncrt),那里不涉及接口包裝。
注意:“反過來”
規(guī)格: 調(diào)用:
Ifx是可尋址的并且&x的方法集包含m,x.m()是 的簡寫(&x).m()。
這意味著如果你聲明rx()了一個(gè)指針接收器,并且你有一個(gè)類型的變量cncrt(注意:不是指針),rx()如果它是可尋址的,你仍然可以調(diào)用它的方法,并且地址將被自動(dòng)獲取并用作收件人。
- 1 回答
- 0 關(guān)注
- 184 瀏覽
添加回答
舉報(bào)