初级会员
  • 第 44494 位会员
  • dequanLi
  • dequan
  • 2019-10-31 09:30:44
  • Offline
  • 19 95

最近发布的主题

    暂无

最近发布的文章

    暂无

最近分享的资源

    暂无

最近发布的项目

    暂无

最近的评论

  • 存在两个问题 1、test1和test2有返回值,task中f没有 2、func(i interface{})和test1(i *int)是不同的函数,也可以理解为两种不同的类型 ```go package main import ( "errors" "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 { // 类型断言一下 intI,isOk := i.(int) if ! isOk { return errors.New("type is invalid") } fmt.Println("test1", intI) // do something here // ... return nil } func test2(s interface{}) (err error) { // 类型断言一下 str,isOk := s.(int) if ! isOk { return errors.New("type is invalid") } fmt.Println("test2", str) // do otherthing here // ... return } func main() { t1 := NewTask(test1) t2 := NewTask(test2) t1.Run() t2.Run() } ```