Avatar ·

Como iterar sobre todos os campos de uma struct em Go? (iteração pelos campos de struct)

Olá a todos! Comecei a estudar Go recentemente e me deparei com um problema: tenho uma struct com vários campos e preciso iterar programaticamente sobre todos os seus campos, por exemplo, para exibir seus valores ou serializá-los em um map. Aqui está um exemplo da minha struct: ```go type User struct { Name string Age int Email string } ``` Quero escrever uma função que receba `User` e exiba todos os campos no formato `chave: valor`. Tentei usar um loop comum, mas Go não permite iterar sobre campos de struct como se fosse um array ou map. ```go func PrintFields(u User) { for _, field := range u { // Erro: cannot range over u (type User) fmt.Println(field) } } ``` Entendo que em outras linguagens (como Python ou JavaScript) isso é feito facilmente com dicionários, mas em Go estou perdido. Alguém pode me dizer como iterar corretamente sobre os campos de uma struct? É necessário usar reflexão? Se sim, como fazer isso de forma segura e eficiente? Agradeço desde já por um exemplo.