本文整理匯總了Golang中reflect.FuncValue.Type方法的典型用法代碼示例。如果您正苦於以下問題:Golang FuncValue.Type方法的具體用法?Golang FuncValue.Type怎麽用?Golang FuncValue.Type使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類reflect.FuncValue
的用法示例。
在下文中一共展示了FuncValue.Type方法的1個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: newThread
func newThread(route []interface{}) *Thread {
if len(route) == 0 {
return nil
}
first := reflect.NewValue(route[0])
args := make([]reflect.Value, 0, 8)
canStop := true
ok := false
var fv *reflect.FuncValue
switch first.(type) {
case *reflect.PtrValue:
{
if len(route) < 2 {
return nil
}
if str, typeok := route[1].(string); typeok {
fv = getMemFunc(first.(*reflect.PtrValue), str)
typ := fv.Type().(*reflect.FuncType)
needArgs := typ.NumIn()
actualArgs := len(route) - 1
if needArgs == actualArgs {
ok = true
canStop = false
} else if needArgs == actualArgs+1 {
canStop = true
ok = checkLastArg(typ)
}
if ok {
args = append(args, first)
for _, i := range route[2:] {
args = append(args, reflect.NewValue(i))
}
}
}
}
case *reflect.FuncValue:
{
fv = first.(*reflect.FuncValue)
typ := fv.Type().(*reflect.FuncType)
needArgs := typ.NumIn()
actualArgs := len(route) - 1
if needArgs == actualArgs {
ok = true
canStop = false
} else if needArgs == actualArgs+1 {
canStop = true
ok = checkLastArg(typ)
}
if ok {
for _, i := range route[1:] {
args = append(args, reflect.NewValue(i))
}
}
}
}
if ok {
t := new(Thread)
t.fv = fv
t.canStop = canStop
t.args = args
return t
}
return nil
}