[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") }
