go 遍历 struct
时间: 2023-10-15 11:02:46 浏览: 75
遍历嵌套的数据结构-Golang开发
在 Go 中,可以使用 `reflect` 包来遍历结构体。以下是一个简单的示例,该示例使用 `reflect` 包中的 `Type` 和 `Value` 函数来获取结构体的类型和值,并使用 `NumField` 和 `Field` 函数来遍历结构体的字段:
```go
package main
import (
"fmt"
"reflect"
)
type Person struct {
Name string
Age int
Address string
}
func main() {
p := Person{"John", 30, "123 Main St."}
v := reflect.ValueOf(p)
t := reflect.TypeOf(p)
for i := 0; i < t.NumField(); i++ {
field := t.Field(i)
value := v.Field(i).Interface()
fmt.Printf("%s: %v\n", field.Name, value)
}
}
```
输出:
```
Name: John
Age: 30
Address: 123 Main St.
```
此示例中,我们首先定义了一个名为 `Person` 的结构体。然后,在 `main` 函数中,我们创建了一个 `Person` 类型的变量 `p`,并使用 `reflect` 包中的 `ValueOf` 和 `TypeOf` 函数获取了 `p` 的值和类型。
接下来,我们使用 `NumField` 函数遍历了结构体的所有字段。对于每个字段,我们使用 `Field` 函数获取其信息,并使用 `Interface` 函数将其值转换为接口类型。最后,我们将字段名和值打印出来。
阅读全文