3 回答

TA貢獻(xiàn)1799條經(jīng)驗(yàn) 獲得超9個(gè)贊
請(qǐng)參閱“使用指針接收器調(diào)用函數(shù)的 Go 語法”,以及
規(guī)范:“方法集”
對(duì)應(yīng)指針類型的方法集是所有接收者為或 的
*T
方法的集合(即還包含 的方法集)。*T
T
T
所以對(duì)于和func (*Server) ListenAndServe
都適用。Server
*Server

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超2個(gè)贊
這兩個(gè)示例都使用 的地址http.Server
。第一個(gè)示例明確采用 的地址http.Server
。
在第二個(gè)示例中,調(diào)用?server.ListenAndServe()
是 的簡寫(&server).ListenAndServe()
。
以下是速記規(guī)范中的相關(guān)文本:
如果 x(的類型)的方法集包含 m 并且參數(shù)列表可以分配給 m 的參數(shù)列表,則方法調(diào)用 xm() 是有效的。如果 x 是可尋址的并且 &x 的方法集包含 m,則 xm() 是 (&x).m() 的簡寫
應(yīng)用短句柄是因?yàn)樽兞?code>server是可尋址的并且&server
其方法集包含ListenAndServe()
。

TA貢獻(xiàn)1906條經(jīng)驗(yàn) 獲得超3個(gè)贊
該方法是使用指針接收器定義的,這意味著必須在可尋址接收器上調(diào)用它。因此,例如:
func f() http.Server {...} f().ListenAndServe()
行不通。
你打電話時(shí):
server.ListenAndServe()
該方法接收的是地址server
而不是它的副本。
- 3 回答
- 0 關(guān)注
- 150 瀏覽
添加回答
舉報(bào)