"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Por que meu compilador gera um erro "Argumentos excessivos" ao passar uma estrutura DataResponse para JSON()?

Por que meu compilador gera um erro "Argumentos excessivos" ao passar uma estrutura DataResponse para JSON()?

Publicado em 2024-11-03
Navegar:197

Why Does My Compiler Throw an \

Problemas do compilador com argumentos de estrutura DataResponse

Apesar de fornecer todos os argumentos necessários, o compilador lança uma mensagem de erro sobre argumentos excessivos ao passar uma estrutura DataResponse como parâmetro para JSON( ).

Problema

O trecho de código fornecido tenta criar uma instância da estrutura DataResponse e passá-la como um parâmetro para a função JSON(). No entanto, o compilador gera um erro indicando que muitos argumentos foram fornecidos.

type DataResponse struct {
    Status int         `json:"status"`
    Data   interface{} `json:"data"`
}

func GetUser(rw http.ResponseWriter, req *http.Request, ps httprouter.Params) {
    user := models.User{}

    resp := DataResponse(200, user)
    JSON(rw, resp)
}

Solução

O erro ocorre devido à sintaxe incorreta para inicialização da estrutura. Os espaços ao redor das chaves significam uma chamada de função em vez de uma inicialização de estrutura usando chaves. Para resolver o problema, altere o código da seguinte maneira:

resp := DataResponse{200, user}

O uso de chaves garante que o código inicialize corretamente a estrutura DataResponse com o fornecido argumentos. O compilador não reclamará mais de muitos argumentos.

Essa modificação garante que o compilador identifique com precisão o código como inicialização da estrutura e permite que a estrutura DataResponse seja usada corretamente como um parâmetro para a função JSON().

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3