Rumah > pembangunan bahagian belakang > Golang > Bagaimanakah Saya Boleh Menyimpan dan Menggunakan Fungsi Secara Dinamik Menggunakan Peta dalam Go?

Bagaimanakah Saya Boleh Menyimpan dan Menggunakan Fungsi Secara Dinamik Menggunakan Peta dalam Go?

Patricia Arquette
Lepaskan: 2024-12-12 21:43:09
asal
284 orang telah melayarinya

How Can I Store and Invoke Functions Dynamically Using Maps in Go?

Menyimpan Fungsi dalam Peta dalam Go

Dalam Go, peta ialah struktur data serba boleh yang boleh menyimpan pasangan nilai kunci. Kadangkala, adalah berguna untuk menyimpan fungsi dalam peta, membenarkan invokasi dinamik berdasarkan kekunci.

Masalah:

Katakan anda mempunyai berbilang fungsi dan ingin mencipta peta yang kuncinya ialah nama fungsi dan nilainya ialah fungsi itu sendiri. Walau bagaimanapun, apabila mencuba ini seperti yang ditunjukkan di bawah, anda menghadapi ralat:

func a(param string) {}

m := map[string]func{} 
'a_func': a,
}

for key, value := range m {
    if key == 'a_func' {
        value(param) 
    }
}
Salin selepas log masuk

Penyelesaian:

Isu timbul kerana sintaks untuk mentakrif peta khusus jenis adalah tidak betul. Untuk menyelesaikan masalah ini, anda boleh menggunakan peta sintaks[rentetan]antara muka{} sebaliknya, kerana keselamatan jenis tidak dikuatkuasakan untuk nilai. Contoh yang diubah suai di bawah menggambarkan cara menyimpan dan menggunakan fungsi daripada peta:

package main

import "fmt"

func f(p string) {
    fmt.Println("function f parameter:", p)
}

func g(p string, q int) {
    fmt.Println("function g parameters:", p, q)
}

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

Dalam contoh ini, peta m menyimpan dua nilai fungsi sebagai antara muka{}. Apabila menggunakan fungsi berdasarkan kekunci, penegasan jenis dilakukan untuk menukar nilai antara muka kepada jenis fungsi yang betul.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menyimpan dan Menggunakan Fungsi Secara Dinamik Menggunakan Peta 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