Fetch the repository succeeded.
package reflectx
import (
"reflect"
)
func WalkStructField(st interface{}, f func(field reflect.StructField, value reflect.Value)) {
t := reflect.TypeOf(st).Elem()
v := reflect.ValueOf(st).Elem()
for i := 0; i < v.NumField(); i++ {
if !v.Field(i).CanSet() {
continue
}
f(t.Field(i), v.Field(i))
}
}
func TryCallMethod(b interface{}, methodName string, args ...interface{}) []reflect.Value {
inputs := make([]reflect.Value, len(args))
for i := range args {
inputs[i] = reflect.ValueOf(args[i])
}
handleMethod := reflect.ValueOf(b).MethodByName(methodName)
if handleMethod.IsValid() {
values := handleMethod.Call(inputs)
return values
}
return nil
}
func IsImplement(child interface{},parent interface{}) bool {
return reflect.TypeOf(child).Implements(reflect.TypeOf(parent).Elem())
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。