Golang使用interface{}传递接收type func函数类型的方法

鬼谷子叔叔 - 2024-07-31 17:43

直接上代码

type interfaceFuncDeclare func(i int)

func interfaceFuncInvoke(f interface{}) interface{} {
   switch v := f.(type) {
   case func(i int):
      return interfaceFuncDeclare(v)
   default:
      fmt.Print("miss match")
   }
   return nil
}

func interfaceFunCall(f interface{}) {
   fun := interfaceFuncInvoke(f).(interfaceFuncDeclare)
   fun(123)
}

func Run() {
    interfaceFunCall(func(i int){
        fmt.Print(i)
    })
}