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  }