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 헤더 및 요청 본문과 같은 상태 정보가 포함되어 있습니다.
따라서 http.Request 인수는 HTTP 요청을 효율적으로 처리하기 위한 포인터여야 합니다. 포함된 상태 정보의 무결성을 유지합니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3