1
resposta

[Dúvida] Sobre o método Find e o slice de Personalidades...

Não sei se meu entendimento tá correto, mas o método 'database.DB.Find(&p)' busca os dados no banco e "popula" através de um ponteiro o slice 'p', que já está carregado na memória? Até porque o 'json.NewEncoder(w).Encode(p)' precisa de um slice preenchido, certo?

1 resposta

Oii, Diego!

Quando você usa database.DB.Find(&p), o GORM busca os dados no banco de dados e popula o slice p com os resultados. Isso acontece porque você está passando o endereço de memória de p (usando &p), permitindo que o GORM preencha esse slice com as personalidades encontradas no banco.

Assim, quando você chama json.NewEncoder(w).Encode(p), o slice p já está preenchido com as informações que foram buscadas, e o método Encode consegue transformar esses dados em JSON para serem enviados como resposta da sua API.

Um exemplo prático seria imaginar que você tem um banco de dados com personalidades como "Deodato" e "Carmela Dutra". Quando você executa database.DB.Find(&p), o GORM busca essas personalidades e as coloca no slice p. Depois, ao usar json.NewEncoder(w).Encode(p), essas personalidades são convertidas para JSON e enviadas ao cliente que fez a requisição.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!