dongshi1424 2017-06-15 21:21
浏览 630
已采纳

golang将func作为参数传递给另一个func

Main question is "is it possible to pass any type func as param and how?". I am learning Go and want to make my own async wrap function like this:

func AsyncFunc(fn func(), args ...interface{}) chan bool {
    var done chan bool;

    go func() {
        fn(args...);
        done <- true;
    }();

    return done;
}

and call it:

max := func(a, b int) int {
    //some hard code what will be goroutine
    if a > b {return a};
    return b;
}

done := AsyncFunc(max, 5, 8);
//some pretty code
<- done;

P.S. sorry for my English if it is bad...

Edit1: I know it is useless, slow and danger. It is just my crazy idea what i want just realise.

  • 写回答

2条回答 默认 最新

  • douyanqu9722 2017-10-07 18:34
    关注

    i found the way to do what i want.

     package main
    
    
     import (
         "fmt"
     )
    
    
     func t1(t int) {
         fmt.Printf("%d
    ", t);
     }
    
    
     func t2(t string) {
         fmt.Printf("%s
    ", t);
     }
    
    
     func test(fn interface{}, data interface{}) {
         switch fn.(type) {
         case func(string):
             fn.(func(string))(data.(string))
         case func(int):
             fn.(func(int))(data.(int))
         }
     }
    
    
     func main() {
         test(t1, 123);
         test(t2, "test");
     }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!