主要问题是“是否可以传递任何类型的函数作为参数以及如何?”。 我正在学习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: 我知道这是无用的,缓慢的和危险的。我想要实现的只是我的疯狂想法。
答案 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