我正在使用reflect.MakeFunc编写函数。该函数可以返回错误。成功时,我希望它为错误类型的返回值返回nil。我该如何使用反射?目前我有这个:
package main
import (
"fmt"
"reflect"
"errors"
)
func main() {
fmt.Println("Hello, playground")
f := func() error {return nil}
fn := reflect.MakeFunc(reflect.TypeOf(f), func(args []reflect.Value) []reflect.Value {
return []reflect.Value{reflect.New(reflect.TypeOf(errors.New("")))}
}).Interface().(func() error)
fmt.Printf("err: %v", fn())
}
panic: reflect: function created by MakeFunc using closure returned wrong
type: have **errors.errorString for
error.Elem()reflect.New(reflect.TypeOf(errors.New("")))panic:
reflect: function created by MakeFunc using closure returned wrong type: have
*errors.errorString for error.Elem().Elem()
如何获得代表nil错误的reflect.Value?