1 回答

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