| // +build ignore,OMIT | |
| package main | |
| import ( | |
| "fmt" | |
| "reflect" | |
| ) | |
| func makeSwap(fptr interface{}) { | |
| swap := func(in []reflect.Value) []reflect.Value { | |
| return []reflect.Value{in[1], in[0]} | |
| } | |
| fn := reflect.ValueOf(fptr).Elem() | |
| v := reflect.MakeFunc(fn.Type(), swap) | |
| fn.Set(v) | |
| } | |
| func main() { | |
| var fn func(int, int) (int, int) | |
| makeSwap(&fn) | |
| fmt.Println(fn(0, 1)) | |
| } |