Avatar ·

如何遍历Go结构体的所有字段?(struct字段迭代)

大家好!我刚开始学习Go,遇到了一个问题:我有一个包含多个字段的结构体,需要以编程方式遍历其所有字段,例如输出它们的值或序列化为map。 以下是我的结构体示例: ```go type User struct { Name string Age int Email string } ``` 我想编写一个函数,接收`User`并以`键: 值`格式输出所有字段。我尝试使用普通循环,但Go不允许像数组或map那样遍历结构体字段。 ```go func PrintFields(u User) { for _, field := range u { // 错误:cannot range over u (type User) fmt.Println(field) } } ``` 我知道在其他语言(如Python或JavaScript)中,通过字典可以轻松实现,但在Go中我陷入了困境。请问如何正确遍历结构体字段?是否需要使用反射?如果需要,如何安全高效地实现? 非常感谢提供示例。