[Go] 利用函數類型實現封裝中的回調

  • 2019 年 12 月 19 日
  • 筆記

當進行業務邏輯開發的時候,經常要進行封裝,封裝成獨立的類文件,在類文件的屬性中預留出函數類型的API

在調用該類文件中某些方法的時候,也根據業務需要調用類屬性中的函數,

在主業務中可以傳遞特定的函數註冊到屬性中,也會被調用到

test.php

package main    import "log"    func main() {      c := NewConn(callback, callback2)      c.Start()  }    //在當前模組定義的回調函數  func callback() {      log.Println("i am callback")  }  func callback2(name string) string {      log.Println("i am callback2 ", name)      return "hello"  }

connection.go是封裝的類文件,回調類主模組中的函數

package main  type Connection struct{      handleFunc func()      handleFunc2 func(name string)string  }  //把被回調函數註冊進了封裝類的屬性中  func NewConn(callback func(),callback2 func(name string)string) *Connection{      c:=&Connection{          handleFunc: callback,          handleFunc2: callback2,      }      return c  }  //在進行某些業務時也把回調函數執行了  func (c *Connection)Start(){      c.handleFunc()      c.handleFunc2("taoshihan")  }