規(guī)格說:類型的方法集決定了該類型實現(xiàn)的接口以及可以使用該類型的接收器調(diào)用的方法。所以,為了驗證這一點,下面是代碼:package mainimport "fmt"// I interftype I interface { hello() goodbye()}// T typetype T struct { name string}func (t T) hello() { fmt.Println("Hello", t.name)}func (t *T) goodbye() { fmt.Println("Goodbye", t.name)}func main() { var t1 T = T{"James"} t1.hello() t1.goodbye()}t1.goodbye()盡管goodbye()方法不是類型的方法集的一部分,T但仍然有效。因為,t1.goodbye()在內(nèi)部工作,因為(&t1).goodbye()它滿足以下規(guī)則:如果您有 aT并且它不可尋址,則只能調(diào)用接收器類型為 的方法T,而不是*T。但是,規(guī)范說,方法調(diào)用遵循以下規(guī)則:類型的方法集決定了該類型實現(xiàn)的接口以及可以使用該類型的接收器調(diào)用的方法。t1.goodbye()as (&t1).goodbye()break 方法調(diào)用規(guī)則的調(diào)用嗎?
1 回答

慕婉清6462132
TA貢獻1804條經(jīng)驗 獲得超2個贊
從規(guī)范中的調(diào)用...
如果 x 的(類型)的方法集包含 m 并且參數(shù)列表可以分配給 m 的參數(shù)列表,則方法調(diào)用 xm() 是有效的。如果 x 是可尋址的并且 &x 的方法集包含 m,則 xm() 是 (&x).m() 的簡寫
t1 是可尋址的。
&t1 的方法集包含 goodbye()。
t1.goodbye() 是 (&t1).goodbye() 的簡寫。
- 1 回答
- 0 關(guān)注
- 158 瀏覽
添加回答
舉報
0/150
提交
取消