當進行業務邏輯開發的時候,常常要進行封裝,封裝成獨立的類文件,在類文件的屬性中預留出函數類型的APIphp
在調用該類文件中某些方法的時候,也根據業務須要調用類屬性中的函數,函數
在主業務中能夠傳遞特定的函數註冊到屬性中,也會被調用到spa
test.php code
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是封裝的類文件,回調類主模塊中的函數blog
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") }