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

當進行業務邏輯開發的時候,常常要進行封裝,封裝成獨立的類文件,在類文件的屬性中預留出函數類型的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")
}

相關文章
相關標籤/搜索