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 關注
- 127 瀏覽
添加回答
舉報