我學習圍棋,我讀Go的官方文檔中關於net/http
,和我寫的文檔下面的代碼測試:爲什麼http.Client {}以前綴?
package main
import (
"net/http"
"fmt"
)
func main() {
client := &http.Client{}
resp, _ := client.Get("http://example.com")
fmt.Println(resp)
}
http.Client
是支柱,但我不知道爲什麼會出現一個&
指針前綴,我覺得創建一個http.Client
參考是沒有必要的,爲什麼client
變量有Get
方法?我讀「網/ HTTP」的源代碼,它定義如下Client
結構:
type Client struct {
Transport RoundTripper
CheckRedirect func(req *Request, via []*Request) error
Jar CookieJar
Timeout time.Duration
}
的Client
結構沒有定義Get
方法,但爲什麼client
變量有Get
方法?
爲什麼要投票這個問題,請給出一些理由,所以我會注意問。 – TangMonk
因爲它在提出問題之前顯示零研究努力。這在[spec](https://golang.org/ref/spec#Address_operators)和[tour](https://tour.golang.org/moretypes/1)中有詳細介紹。 – Adrian
但方法接收器沒有在遊覽中提及,這是與學習者誤解的另一種語言不同的概念。並且直接將值傳遞給函數參數只是一個沒有指定的拷貝而沒有在巡視中提到的指針(我從來沒有使用直接使用指針來執行http請求的語言,ruby,java,python,elixir ...)。閱讀規範是無聊的,並渴望學習一門新的語言。我不認爲一個新鮮的問題是沒有價值的,你可以看到最後一個答案也是錯誤的,這意味着有些人還不瞭解這種語言。 – TangMonk