HTTP 處理程序中的指標
在Go 中,HTTP 處理程序函數的簽章通常類似於下列內容:
func handle(w http.ResponseWriter, r *http.Request) {}
這個簽章給了指標新手一個問題:為什麼Request物件是指針,而ResponseWriter是不是嗎?
要理解這一點,深入研究這兩種類型的具體細節至關重要。
ResponseWriter 代表 HTTP 回應物件。然而,在表面之下,它實際上是一個指向名為 http.response 的未匯出類型的指針,該類型封裝了 HTTP 回應處理的內部結構。由於 ResponseWriter 是一個接口,因此其底層實作並未公開。
相反,Request 物件是一個指向具體結構(Request)的指針,其中包含表示 HTTP 請求各個方面的字段,例如標頭、正文和 URL 資訊。與管理伺服器回應的 ResponseWriter 不同,Request 物件主要用於存取用戶端的請求資料。如果需要,將其作為指標傳遞允許處理程序直接修改請求參數。
以上是為什麼 `*http.Request` 是一個指針,但 `http.ResponseWriter` 不在 Go HTTP 處理程序中?的詳細內容。更多資訊請關注PHP中文網其他相關文章!