Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Mendapat Fungsi Go Secara Dinamik Menggunakan Nama Rentetan?

Bagaimana untuk Mendapat Fungsi Go Secara Dinamik Menggunakan Nama Rentetan?

Barbara Streisand
Barbara Streisandasal
2024-11-28 20:41:14829semak imbas

How to Dynamically Invoke Go Functions Using String Names?

Menyebut Fungsi Secara Dinamik Menggunakan Nama Rentetan dalam Go

Dalam Go, fungsi menduduki kedudukan kelas pertama, menghapuskan keperluan untuk teknik litar yang digunakan dalam bahasa dinamik. Ini membolehkan fungsi dihantar sebagai parameter kepada fungsi lain, dengan berkesan mendayakan keupayaan pengaturcaraan meta.

Sebagai contoh, katakan anda ingin menghantar fungsi sebagai hujah kepada fungsi lain. Berikut ialah kod yang boleh anda gunakan untuk mencapai ini:

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))
}

Menjalankan kod ini akan menghasilkan output berikut:

123
99

Selain itu, jika pemilihan fungsi dipengaruhi oleh masa jalan sahaja nilai yang diketahui, peta boleh digunakan:

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

...

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

Atas ialah kandungan terperinci Bagaimana untuk Mendapat Fungsi Go Secara Dinamik Menggunakan Nama Rentetan?. 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