go 遍历结构体metghod
时间: 2023-07-11 21:53:01 浏览: 97
C#遍历结构体
3星 · 编辑精心推荐
在 Go 语言中,我们可以使用反射机制遍历结构体中的方法。以下是一个示例代码:
```go
package main
import (
"fmt"
"reflect"
)
type Person struct {
Name string
Age int
Address string
}
func (p Person) SayHello() {
fmt.Printf("Hello, my name is %s and I'm %d years old.\n", p.Name, p.Age)
}
func main() {
p := Person{
Name: "John",
Age: 30,
Address: "123 Main St",
}
v := reflect.ValueOf(p)
t := v.Type()
for i := 0; i < t.NumMethod(); i++ {
methodType := t.Method(i)
fmt.Println(methodType.Name)
}
}
```
在上面的示例中,我们定义了一个 `Person` 结构体和一个 `SayHello` 方法。然后使用反射机制遍历所有方法,使用 `t.NumMethod()` 获取结构体中方法的数量,使用 `t.Method(i)` 获取方法的类型信息,并使用 `methodType.Name` 获取方法名称,最后打印出来即可。需要注意的是,只有导出的方法才能被反射获取到。
阅读全文