github.com/graybobo/golang.org-package-offline-cache@v0.0.0-20200626051047-6608995c132f/x/talks/2013/go1.1/makefunc.go (about) 1 // +build OMIT 2 3 package main 4 5 import ( 6 "fmt" 7 "reflect" 8 ) 9 10 func makeSwap(fptr interface{}) { 11 swap := func(in []reflect.Value) []reflect.Value { 12 return []reflect.Value{in[1], in[0]} 13 } 14 fn := reflect.ValueOf(fptr).Elem() 15 v := reflect.MakeFunc(fn.Type(), swap) 16 fn.Set(v) 17 } 18 19 func main() { 20 var fn func(int, int) (int, int) 21 makeSwap(&fn) 22 fmt.Println(fn(0, 1)) 23 }