Rumah >pembangunan bahagian belakang >Golang >Bolehkah Fungsi Go Diluluskan sebagai Parameter?

Bolehkah Fungsi Go Diluluskan sebagai Parameter?

Susan Sarandon
Susan Sarandonasal
2024-12-03 19:55:10654semak imbas

Can Go Functions Be Passed as Parameters?

Bolehkah Fungsi Dilalui Sebagai Parameter dalam Go?

Java membenarkan menghantar fungsi sebagai parameter melalui penggunaan kelas dalaman tanpa nama. Adakah Go menyediakan mekanisme yang serupa untuk memudahkan fungsi ini?

Jawapan:

Sudah tentu! Go menyokong fungsi lulus sebagai parameter melalui fungsi dan penutupan tanpa nama. Berikut ialah beberapa contoh:

Contoh 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"
}

Dalam contoh ini, jenis fungsi tukar ditakrifkan untuk mengambil integer dan mengembalikan rentetan. Fungsi nilai melaksanakan penukaran dengan mengembalikan perwakilan rentetan bagi integer input. Fungsi petikan123 menerima fungsi tukar sebagai hujah dan mengembalikan perwakilan rentetan petikan hasil panggilan fungsi dengan nilai 123.

Contoh 2:

package main

import "fmt"

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

Di sini, fungsi tanpa nama dihantar sebagai hujah kepada fungsi quote123. Fungsi tanpa nama menukar integer input kepada perwakilan rentetan binarinya.

Contoh 3:

package main

import "fmt"

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

Dalam kes ini, fungsi bernama, foo, dihantar sebagai hujah untuk dipetik123. Fungsi foo hanya mengembalikan rentetan "foo" untuk sebarang input.

Contoh ini menunjukkan fleksibiliti dan kuasa menghantar fungsi sebagai parameter dalam Go, membolehkan anda membuat kod generik dan boleh diguna semula.

Atas ialah kandungan terperinci Bolehkah Fungsi Go Diluluskan sebagai Parameter?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn