type Xfd struct {
F string
}
func (this *Cheating) Tsfe(x *Xfd) {
if x == nil {
fmt.Println("x")
}
fmt.Println("fs")
}
func main() { //这个 { 不能另起一行
crq := Cheating{}
// xfqw := Xfd{}
// as := []reflect.Value{reflect.New(reflect.TypeOf(Xfd)).Elem()}
// fmt.Println(len(as))
reflect.ValueOf(&crq).MethodByName("Tsfe").Call([]reflect.Value{reflect.ValueOf((*Xfd)(nil))})
}
https://stackoverflow.com/questions/25700630/how-can-i-use-reflect-value-call-with-a-nil-input
func multiSendStrategys(strategys ...strategySender) chan securityResultModel {
complete := make(chan securityResultModel, len(strategys))
for _, v := range strategys {
rlog.Debugf("out progress methodName:%v", v.methodName)
go func(input strategySender) {
rlog.Debugf("methodName:%v", input.methodName)
method := v.strategyPtr.MethodByName(input.methodName)
//反射调用
values := method.Call(input.paramsValue)
//将结果设置到channel中
var e error
if values[1].Interface() == nil {
e = nil
} else {
e = values[1].Interface().(error)
}
result := securityResultModel{model: input.model, ret: int(values[0].Int()), err: e}
complete <- result
}(v)
}
return complete
}