Jadual Kandungan
Kandungan soalan
Penyelesaian
Rumah pembangunan bahagian belakang Golang Pelbagai jenis fungsi dalam pemetaan, Golang

Pelbagai jenis fungsi dalam pemetaan, Golang

Feb 12, 2024 am 08:39 AM
pembangunan golang

Pelbagai jenis fungsi dalam pemetaan, Golang

Map ialah struktur data yang berkuasa di Golang yang membolehkan kami mengaitkan satu nilai dengan nilai lain. Di Golang, kita boleh menggunakan pemetaan untuk melaksanakan pelbagai jenis fungsi. Editor PHP Youzi akan memperkenalkan pelbagai jenis fungsi dalam pemetaan dalam artikel ini, termasuk fungsi biasa, fungsi tanpa nama dan kaedah. Bukan itu sahaja, kami akan meneroka cara menggunakan fungsi sebagai nilai dalam pemetaan dan menunjukkan kuasa dan fleksibilitinya. Sama ada anda seorang pemula atau pembangun Golang yang berpengalaman, artikel ini akan memberikan anda pengetahuan dan contoh yang berguna untuk membantu anda memahami dan menggunakan jenis fungsi dengan lebih baik dalam pemetaan. Mari mulakan meneroka!

Kandungan soalan

Saya mahu menyambungkan input pengguna ke fungsi. Input pengguna ialah rentetan. Sebagai contoh, "func_name=MyPrintf&s1=你好,世界!" atau "func_name=MyAdd&i1=1&i2=2"

Kod setiap fungsi ialah,

func MyPrintf(s1 string) {
    fmt.Println(s1)
}

func MyAdd(i1, i2 int) {
    fmt.Println(i1, i2)
}
Salin selepas log masuk

Saya ingin peta seperti di bawah,

type Myfunc func(string) | func(int, int)   // <- Of course, it's wrong code, just I hope like this.

myMap := make(map[string]Myfunc)

myMap["MyPrintf"] = MyPrintf
myMap["MyAdd"] = MyAdd
Salin selepas log masuk

myMap boleh memanggil fungsi melalui rentetan func_name yang dimasukkan oleh pengguna.

myMap[func_name](s1) Output: Hello, dunia! myMap[func_name](i1, i2) Keluaran: 3

Adakah ini mungkin? Mungkin saya fikir menggunakan "eval" adalah mungkin, tetapi saya mendengar bahawa menggunakan "eval" adalah buruk. Jadi, saya terfikir untuk menggunakan penunjuk fungsi, tetapi tiada penunjuk fungsi di Golang.

Saya mencuba beberapa pengaturcaraan umum Golang,

type Myfunc interface {
    func(string) | func(int, int)
}

myMap := make(map[string]Myfunc)
Salin selepas log masuk

Output: Ralat berlaku: tidak boleh menggunakan jenis Myfunc di luar kekangan jenis: antara muka mengandungi kekangan jenis

Cuba lagi,

myMap := make(map[string]interface{})

myMap["MyPrintf"] = interface{}(MyPrintf)
myMap["MyPrintf"].(func(string))("Hello, world!")
Salin selepas log masuk

Output: Hello, dunia!

myMap["MyAdd"] = interface{}(MyAdd)
myMap["MyAdd"].(func(int,int))(1, 2)
Salin selepas log masuk

Keluaran: 3

Ia berfungsi, tetapi anda perlu menentukan jenis fungsi yang betul, yang tidak begitu selesa. Saya rasa cara ini tidak sesuai untuk senario saya. Tolong beri saya bantuan. Saya minta maaf atas penulisan bahasa Inggeris saya yang teruk.

Penyelesaian

Anda boleh mencuba ini:

Saya mesti mengatakan ini bukan amalan yang baik kerana ralat panik disebabkan oleh jenis yang salah tidak disahkan. Saya akan mempertimbangkan pendekatan lain.

package main

import "fmt"

type GeneralFunc func(args ...interface{})

func main() {
    // Create a map of functions with the type GeneralFunc
    functionsMap := map[string]GeneralFunc{
        "MyPrintf": func(args ...interface{}) { fmt.Println(args[0].(string)) },
        "MyAdd":    func(args ...interface{}) { fmt.Println(args[0].(int), args[1].(int)) },
    }

    // Use the functions from the map
    functionsMap["MyPrintf"]("Hello World")
    functionsMap["MyAdd"](2, 3)
}
Salin selepas log masuk

Atas ialah kandungan terperinci Pelbagai jenis fungsi dalam pemetaan, Golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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

Tag artikel panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Cabaran keselamatan dalam pembangunan Golang: Bagaimana untuk mengelak daripada dieksploitasi untuk penciptaan virus? Cabaran keselamatan dalam pembangunan Golang: Bagaimana untuk mengelak daripada dieksploitasi untuk penciptaan virus? Mar 19, 2024 pm 12:39 PM

Cabaran keselamatan dalam pembangunan Golang: Bagaimana untuk mengelak daripada dieksploitasi untuk penciptaan virus?

Bangunkan aplikasi desktop yang berkuasa dengan Golang Bangunkan aplikasi desktop yang berkuasa dengan Golang Mar 19, 2024 pm 05:45 PM

Bangunkan aplikasi desktop yang berkuasa dengan Golang

Langkah dan petua untuk pengaturcaraan dengan Golang pada Mac Langkah dan petua untuk pengaturcaraan dengan Golang pada Mac Mar 03, 2024 am 08:30 AM

Langkah dan petua untuk pengaturcaraan dengan Golang pada Mac

Apakah bahasa pengaturcaraan yang biasa digunakan oleh pembangun Golang? Apakah bahasa pengaturcaraan yang biasa digunakan oleh pembangun Golang? Mar 18, 2024 pm 09:06 PM

Apakah bahasa pengaturcaraan yang biasa digunakan oleh pembangun Golang?

Penyelidikan tentang kesan dan peranan Golang terhadap pembangunan rantaian blok Penyelidikan tentang kesan dan peranan Golang terhadap pembangunan rantaian blok Feb 26, 2024 pm 04:24 PM

Penyelidikan tentang kesan dan peranan Golang terhadap pembangunan rantaian blok

Kelebihan dan Kelemahan Menggunakan Golang untuk Membangunkan Permainan Mudah Alih Kelebihan dan Kelemahan Menggunakan Golang untuk Membangunkan Permainan Mudah Alih Mar 05, 2024 pm 03:51 PM

Kelebihan dan Kelemahan Menggunakan Golang untuk Membangunkan Permainan Mudah Alih

Rangka kerja kit Go membantu meningkatkan prestasi API Golang Rangka kerja kit Go membantu meningkatkan prestasi API Golang May 07, 2024 pm 03:24 PM

Rangka kerja kit Go membantu meningkatkan prestasi API Golang

Pendekatan Golang untuk melaksanakan aplikasi desktop merentas platform Pendekatan Golang untuk melaksanakan aplikasi desktop merentas platform Mar 20, 2024 am 11:39 AM

Pendekatan Golang untuk melaksanakan aplikasi desktop merentas platform

See all articles