golang 反射如何传入nil

 

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

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值