求助:关于参数为interface的函数指针传递

redunit · · 1715 次点击
golang是不支持泛型的, 所以你设计的参数传递不能实现, 你只能做成这样: ```go package main import ( "fmt" ) type Task struct { f func(i interface{}) (error) } func NewTask(h func(interface{}) (error)) (t *Task) { t = &Task{ f: h, } return } func (t *Task) Run() { fmt.Println("Runing...") } func test1(i interface{}) error { fmt.Println("test1", i) // do something here // ... return nil } func test2(s interface{}) (err error) { fmt.Println("test2", s) // do otherthing here // ... return } func main() { fmt.Println("aa") t1 := NewTask(test1) t2 := NewTask(test2) t1.Run() t2.Run() } ``` 或者你可以使用context.Context来传递任何你想传递的参数
#8
更多评论
亲,请使用markdown格式化你的代码. 否则看不懂而且缺东西?
#1
```go package main import "fmt" type task struct { f func(i interface{}) } func (t *task) run() *task { return &task{ f: func(i interface{}) { fmt.Println(i) }, } } func allType() *task { return &task{ f: func(i interface{}) { fmt.Println(i) }, } } func main() { a := allType() a.f("aaa") var b task b1 := b.run() b1.f("bbb") } ``` 是不是就是想简单实现这个??
#2