Rumah > pembangunan bahagian belakang > Golang > Bagaimanakah Saya Boleh Memanggil Fungsi Go Menggunakan Namanya (String) pada Runtime?

Bagaimanakah Saya Boleh Memanggil Fungsi Go Menggunakan Namanya (String) pada Runtime?

DDD
Lepaskan: 2024-12-04 18:45:14
asal
267 orang telah melayarinya

How Can I Call a Go Function Using Its Name (String) at Runtime?

Penunjuk ke Fungsi daripada String in Go

Metaprogramming, atau keupayaan untuk memanipulasi kod itu sendiri semasa runtime, ialah teknik yang berkuasa dalam pengaturcaraan. Dalam Go, satu aspek yang mungkin timbul ialah keperluan untuk mengakses penuding kepada fungsi berdasarkan namanya, yang disediakan sebagai rentetan.

Penyelesaian

Tidak seperti bahasa dinamik, fungsi Go dianggap sebagai nilai kelas pertama. Ini bermakna fungsi boleh dihantar sebagai hujah kepada fungsi lain, menghapuskan keperluan untuk teknik pengaturcaraan meta yang kompleks.

Untuk menunjukkan ini, pertimbangkan coretan 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))
}
Salin selepas log masuk

Pelaksanaan

Apabila kod ini dilaksanakan, ia akan menghasilkan yang berikut output:

123
99
Salin selepas log masuk

Ini menunjukkan cara fungsi boleh dihantar sebagai argumen kepada someOtherFunction, berdasarkan nama mereka.

Pemilihan Fungsi Tersuai

Jika pemilihan fungsi bergantung pada nilai yang hanya diketahui semasa runtime, anda boleh menggunakan peta untuk mengaitkan nama fungsi dengan yang sepadan penunjuk fungsi:

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

...

z := someOtherFunction(x, y, m[key])
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memanggil Fungsi Go Menggunakan Namanya (String) pada Runtime?. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan