go语言打印结构体的字段名和字段值
时间: 2023-07-08 08:17:07 浏览: 168
匿名字段和内嵌结构体-《数字信号处理》第四版高西全版课后部分习题答案
可以使用反射来实现打印结构体的字段名和字段值,示例代码如下:
```go
package main
import (
"fmt"
"reflect"
)
type Person struct {
Name string
Age int
}
func main() {
p := Person{"Tom", 20}
v := reflect.ValueOf(p)
t := v.Type()
for i := 0; i < v.NumField(); i++ {
fmt.Printf("%s: %v\n", t.Field(i).Name, v.Field(i).Interface())
}
}
```
输出结果为:
```
Name: Tom
Age: 20
```
其中,`reflect.ValueOf()` 返回一个 `reflect.Value` 类型的值,可以使用 `v.Field(i)` 来获取结构体的第 i 个字段的值;`reflect.TypeOf()` 返回一个 `reflect.Type` 类型的值,可以使用 `t.Field(i).Name` 来获取结构体的第 i 个字段的名称。
阅读全文