首頁 > 後端開發 > Golang > Go 函數可以當作參數傳遞嗎?

Go 函數可以當作參數傳遞嗎?

Susan Sarandon
發布: 2024-12-03 19:55:10
原創
585 人瀏覽過

Can Go Functions Be Passed as Parameters?

Go 中可以將函數當作參數傳遞嗎?

Java 允許透過使用匿名內部類別將函數作為參數傳遞。 Go 是否提供了類似的機制來促進此功能?

答:

當然! Go 支援透過匿名函數和閉包將函數傳遞為參數。以下是一些範例:

範例 1:

package main

import "fmt"

type convert func(int) string

func value(x int) string {
    return fmt.Sprintf("%v", x)
}

func quote123(fn convert) string {
    return fmt.Sprintf("%q", fn(123))
}

func main() {
    result := quote123(value)
    fmt.Println(result) // Output: "123"
}
登入後複製

在此範例中,convert 函數類型定義為採用整數並傳回字串。值函數透過傳回輸入整數的字串表示形式來實現轉換。 quote123 函數接受轉換函數為參數,並傳回呼叫函數結果的引號字串表示形式,值為 123。

範例 2:

package main

import "fmt"

func main() {
    result := quote123(func(x int) string { return fmt.Sprintf("%b", x) })
    fmt.Println(result) // Output: "1111011"
}
登入後複製

這裡,一個匿名函數作為參數傳遞給 quote123 函數。匿名函數將輸入整數轉換為其二進位字串表示形式。

範例 3:

package main

import "fmt"

func main() {
    foo := func(x int) string { return "foo" }
    result := quote123(foo)
    fmt.Println(result) // Output: "foo"
}
登入後複製

在本例中,命名函數 foo 被傳遞為quote123 的參數。 foo 函數只是為任何輸入返回字串“foo”。

這些範例示範了在 Go 中將函數作為參數傳遞的靈活性和強大功能,使您能夠建立通用且可重複使用的程式碼。

以上是Go 函數可以當作參數傳遞嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板