1 回答

TA贡献1825条经验 获得超6个赞
这是一个示例,说明如何使用reflect. 仅更改了 XmlVerify 中的值以使示例更容易一些。还要确保方法名称已导出(大写)。
package main
import (
"fmt"
"reflect"
)
type XmlVerify struct {
value string
}
func (xver XmlVerify) CheckUTC() (string, bool) {
return "cUTC", xver.value == "one"
}
func (xver XmlVerify) CheckSugPresDel() (string, bool) {
return "cSugPresDel", xver.value == "two"
}
func (xver XmlVerify) CheckStartNum() (string, bool) {
return "cStartNum", xver.value == "three"
}
func verify(xmlverify XmlVerify) {
t := reflect.TypeOf(xmlverify)
for i := 0; i < t.NumMethod(); i++ {
method := t.Method(i)
ret := reflect.ValueOf(xmlverify).MethodByName(method.Name).Call(nil)
fmt.Printf("%s checks passed: %t\n", ret[0], ret[1])
}
}
func main() {
v := XmlVerify{"two"}
verify(v)
}
输出:
cStartNum checks passed: false
cSugPresDel checks passed: true
cUTC checks passed: false
- 1 回答
- 0 关注
- 110 浏览
添加回答
举报