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

时间:2017-06-15 21:21:55

标签: go parameters func

主要问题是“是否可以传递任何类型的函数作为参数以及如何?”。 我正在学习Go并且想要创建我自己的异步换行函数:

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

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

    return done;
}

并称之为:

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。对不起我的英语如果不好......

EDIT1: 我知道这是无用的,缓慢的和危险的。我想要实现的只是我的疯狂想法。

2 个答案:

答案 0 :(得分:2)

我找到了做我想要的方法。

 package main


 import (
     "fmt"
 )


 func t1(t int) {
     fmt.Printf("%d\n", t);
 }


 func t2(t string) {
     fmt.Printf("%s\n", 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 :(得分:1)

原因可以去做,请考虑以下简单示例:

NavBar

在你的情况下,只需要

ViewController