Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Saya Boleh Dapatkan Penunjuk Fungsi daripada Nama Fungsi dalam Go?

Bagaimanakah Saya Boleh Dapatkan Penunjuk Fungsi daripada Nama Fungsi dalam Go?

Barbara Streisand
Barbara Streisandasal
2024-12-03 07:22:10433semak imbas

How Can I Retrieve Function Pointers from Function Names in Go?

Mengambil Penunjuk Fungsi daripada Nama Fungsi dalam Go

Banyak bahasa pengaturcaraan membenarkan akses kepada penunjuk fungsi daripada perwakilan rentetan nama fungsi. Keupayaan ini amat berguna untuk teknik pengaturcaraan meta, seperti memilih fungsi secara dinamik untuk pelaksanaan.

Penyelesaian dalam Go

Tidak seperti beberapa bahasa lain, Go secara asli menyokong penunjuk fungsi sebagai yang pertama -nilai kelas, menghapuskan keperluan untuk mekanisme tambahan untuk mendapatkannya daripada nama fungsi. Sebaliknya, fungsi boleh dihantar terus sebagai argumen kepada fungsi lain.

Sebagai contoh, pertimbangkan kod berikut:

package main

import "fmt"

func someFunction1(a, b int) int {
    return a + b
}

func someFunction2(a, b int) int {
    return a - b
}

func someOtherFunction(a, b int, f func(int, int) int) int {
    return f(a, b)
}

func main() {
    fmt.Println(someOtherFunction(111, 12, someFunction1))
    fmt.Println(someOtherFunction(111, 12, someFunction2))
}

Dalam kod ini, someOtherFunction menerima penunjuk fungsi sebagai argumen dan memanggil fungsi yang ditentukan dengan hujah yang disediakan.

Menggunakan Peta untuk Fungsi Dinamik Pemilihan

Dalam kes di mana pemilihan fungsi bergantung pada maklumat masa jalan, anda boleh menggunakan peta untuk mengaitkan nama fungsi dengan penunjuk fungsi yang sepadan. Contohnya:

m := map[string]func(int, int) int{
    "someFunction1": someFunction1,
    "someFunction2": someFunction2,
}

...

z := someOtherFunction(x, y, m[key])

Ini membolehkan anda mendapatkan semula dan melaksanakan fungsi secara dinamik berdasarkan kunci yang ditentukan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Dapatkan Penunjuk Fungsi daripada Nama Fungsi dalam Go?. 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