golang 判断结构体函数存不存在
在Go语言中,可以使用反射来判断结构体中是否存在某个函数。具体步骤如下:
- 获取结构体的类型信息
t := reflect.TypeOf(myStruct{})
- 遍历结构体的方法列表,查找是否存在目标函数
funcName := "myFunc"
for i := 0; i < t.NumMethod(); i++ {
if t.Method(i).Name == funcName {
// 找到了目标函数
return true
}
}
// 没有找到目标函数
return false
完整代码示例:
package main
import (
"fmt"
"reflect"
)
type myStruct struct{}
func (s myStruct) myFunc() {
fmt.Println("myFunc called")
}
func hasFunc(s interface{}, funcName string) bool {
t := reflect.TypeOf(s)
for i := 0; i < t.NumMethod(); i++ {
if t.Method(i).Name == funcName {
return true
}
}
return false
}
func main() {
s := myStruct{}
fmt.Println(hasFunc(s, "myFunc")) // true
fmt.Println(hasFunc(s, "otherFunc")) // false
}
输出:
true
false
原文地址: https://www.cveoy.top/t/topic/qIj 著作权归作者所有。请勿转载和采集!