"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Por qué el argumento `http.Request` necesita ser un puntero en Go?

¿Por qué el argumento `http.Request` necesita ser un puntero en Go?

Publicado el 2024-11-14
Navegar:848

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

¿Por qué el argumento de la solicitud HTTP debe ser un puntero?

En Go, el tipo http.Request es una estructura grande que contiene información diversa sobre una solicitud HTTP. Para manejar las solicitudes HTTP de manera eficiente, Go utiliza punteros para evitar la sobrecarga de copiar estructuras de datos grandes.

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)
}

Si elimina el asterisco (*) en *http.Request, encontrará un error porque el literal de función espera un puntero al tipo 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

Los punteros se utilizan en Go para pasar referencias a objetos, en lugar de copias de los objetos mismos. Esto es más eficiente, especialmente para estructuras grandes como http.Request. Además, http.Request contiene información de estado, como los encabezados HTTP y el cuerpo de la solicitud, lo que resultaría confuso si se copia.

Por lo tanto, el argumento http.Request debe ser un puntero para garantizar un manejo eficiente de las solicitudes HTTP. y mantener la integridad de la información estatal que contiene.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3