Go에서 http.Request 유형은 HTTP 요청에 대한 다양한 정보를 포함하는 대규모 구조체입니다. HTTP 요청을 효율적으로 처리하기 위해 Go는 포인터를 사용하여 대규모 데이터 구조를 복사하는 오버헤드를 방지합니다.
<code class="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) }</code>
*http.Request에서 별표(*)를 제거하면 func 리터럴은 http.Request 유형에 대한 포인터를 기대합니다.
<code class="go"> <p>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</p></code>
Go에서 포인터는 객체 자체의 복사본이 아닌 객체에 대한 참조를 전달하는 데 사용됩니다. 이는 특히 http.Request와 같은 대규모 구조의 경우 더 효율적입니다. 또한 http.Request에는 HTTP 헤더 및 요청 본문과 같은 상태 정보가 포함되어 있어 복사하면 혼동될 수 있습니다.
따라서 HTTP 요청을 효율적으로 처리하려면 http.Request 인수가 포인터여야 합니다. 포함된 상태 정보의 무결성을 유지합니다.
위 내용은 Go에서 `http.Request` 인수가 포인터가 되어야 하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!