」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 為什麼 `http.Request` 參數需要是 Go 中的指標?

為什麼 `http.Request` 參數需要是 Go 中的指標?

發佈於2024-11-14
瀏覽:231

Why Does the `http.Request` Argument Need to Be a Pointer in Go?

為什麼 HTTP 請求參數必須是指標?

在 Go 中,http.Request 類型是一個大型結構體,包含有關 HTTP 請求的各種資訊。為了有效地處理 HTTP 請求,Go 使用指標來避免複製大型資料結構的開銷。

package main

import (
    "net/http"
)

func main() {
    http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
        w.Write([]byte("hello world"))
    })
    http.ListenAndServe(":8000", nil)
}

如果刪除 *http.Request 中的星號 (*),則會遇到錯誤,因為 func 文字需要指向 http.Request 類型的指標。

  

github.com/creating_web_app_go/main.go:8: cannot use func literal (type func(http.ResponseWriter, http.Request)) as type func(http.ResponseWriter, *http.Request) in argument to http.HandleFunc

Go中使用指標傳遞對物件的引用,而不是物件本身的副本。這更有效,特別是像 http.Request 這樣的大型結構。另外,http.Request包含了狀態訊息,例如HTTP headers和request body,如果複製的話會很混亂。

因此,http.Request參數必須是指針,以確保HTTP請求的高效處理並維護其包含的狀態資訊的完整性。

最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3