Go 語言提供了 func 類型進行函數值動態建立和銷毀:建立:使用 func 關鍵字動態建立函數類型,如 f := func(x int) int { return x * x }。呼叫:將函數值作為參數傳遞給另一個函數,如 call(f, 5)。銷毀:函數值在超出作用域時被銷毀,與變數類似。
#Go 語言提供了內建的func
類型,它允許我們建立和使用函數值。
可以使用func
關鍵字動態建立函數類型:
f := func(x int) int { return x * x }
以上程式碼建立了一個函數類型,它接受一個整數參數並傳回一個整數。
可以透過將函數值作為參數傳遞給另一個函數來呼叫它:
func call(f func(int) int, x int) { fmt.Println(f(x)) } call(f, 5)
函數值的生命週期與變數相同,當它們超出作用域時,它們將被銷毀。
在goroutine 中建立回呼函數來處理結果是一種常見場景:
func main() { ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) defer cancel() resultCh := make(chan int) // 创建回调函数 f := func(result int) { resultCh <- result } go func() { // 模拟耗时的处理 time.Sleep(5 * time.Second) result := 42 f(result) }() select { case result := <-resultCh: fmt.Println("Received result:", result) case <-ctx.Done(): fmt.Println("Timed out waiting for result") } }
在這個範例中,動態建立的回調函數f
用於在goroutine 完成處理後通知主goroutine結果。
以上是golang函數型別的動態建立與銷毀機制的詳細內容。更多資訊請關注PHP中文網其他相關文章!