Rumah > pembangunan bahagian belakang > Golang > Bagaimanakah Saya Boleh Memetakan Fungsi dengan Tandatangan Berbeza dalam Go?

Bagaimanakah Saya Boleh Memetakan Fungsi dengan Tandatangan Berbeza dalam Go?

Mary-Kate Olsen
Lepaskan: 2024-12-10 22:15:14
asal
862 orang telah melayarinya

How Can I Map Functions with Different Signatures in Go?

Fungsi Pemetaan dalam Go

Dalam Go, peta menyediakan cara yang berkesan untuk mengaitkan kunci dengan nilai masing-masing. Untuk memetakan fungsi, kunci biasanya rentetan yang mewakili nama atau pengecam fungsi, manakala nilainya ialah rujukan fungsi.

Contoh:

Pertimbangkan perkara berikut Program Go:

func a(param string) {
    fmt.Println("parameter:", param)
}

m := map[string]func(string) {
    "a": a,
}

for key, value := range m {
    if key == "a" {
        value("hello")
    }
}
Salin selepas log masuk

Dalam contoh ini, peta m digunakan untuk menyimpan pemetaan antara kekunci rentetan "a" dan rujukan fungsi a. Gelung berulang di atas peta dan melaksanakan fungsi yang dikaitkan dengan kekunci "a", menghantar rentetan "hello" sebagai hujah.

Mengendalikan Tandatangan Fungsi Pelbagai:

Walau bagaimanapun, dalam percubaan awal anda, anda menghadapi masalah semasa cuba menyimpan fungsi dengan tandatangan berbeza dalam peta. Ini kerana jenis nilai dalam peta diisytiharkan sebagai func(). Untuk mengendalikan fungsi dengan tandatangan yang berbeza-beza, kami boleh menggunakan antara muka sebagai jenis nilai, seperti antara muka{} yang digunakan dalam contoh semakan berikut:

func f(p string) {}
func g(p string, q int) {}

m := map[string]interface{}{
    "f": f,
    "g": g,
}
for k, v := range m {
    switch k {
    case "f":
        v.(func(string))("astring") // Explicit cast to type func(string)
    case "g":
        v.(func(string, int))("astring", 42) // Explicit cast to type func(string, int)
    }
}
Salin selepas log masuk

Dengan menggunakan jenis antara muka{}, kami membenarkan peta untuk menyimpan nilai apa-apa jenis, termasuk fungsi dengan tandatangan yang berbeza. Kami kemudian menggunakan pemutus jenis eksplisit dalam gelung untuk melaksanakan fungsi dengan parameter masing-masing.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memetakan Fungsi dengan Tandatangan Berbeza dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan