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.
Para saber mais:
Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!