Jadual Kandungan
Kandungan soalan
Penyelesaian
Rumah pembangunan bahagian belakang Golang Fungsi universal untuk menukar Peta kepada Senarai dalam GO

Fungsi universal untuk menukar Peta kepada Senarai dalam GO

Feb 13, 2024 pm 08:30 PM
pasangan nilai kunci

GO 中将 Map 转换为 List 的通用函数

editor php Strawberry memperkenalkan anda kepada alat praktikal yang dipanggil "Fungsi universal untuk menukar Peta kepada Senarai dalam GO". Fungsi ini boleh membantu anda menukar struktur data peta nilai kunci (Peta) kepada struktur data senarai (Senarai). Melalui fungsi umum ini, anda boleh menukar struktur data kompleks dengan mudah kepada bentuk yang lebih ringkas, meningkatkan kebolehbacaan dan kebolehselenggaraan kod anda. Sama ada anda pernah menghadapi keperluan yang sama dalam pembangunan atau ingin mengetahui lebih banyak teknik tentang penukaran struktur data, fungsi universal ini akan membawa kemudahan dan inspirasi kepada anda. Mari kita terokai alat berguna ini bersama-sama!

Kandungan soalan

Bagaimana untuk menulis fungsi dalam go yang menukar mana-mana peta kepada senarai objek (mengalih keluar kekunci)?

Contohnya:

func maptolist(inputmap map[any]any) any {
    var resultlist []any 
    for _, obj := range inputmap {
        resultlist = append(resultlist, obj)
    }
    return resultlist
}

func main() {
    mymap := make(map[string]string)
    mymap["a"] = "1"
    mymap["b"] = "12"
    l := maptolist(mymap).([]string)
    fmt.printf("(%v, %t)\n", l, l)
}
Salin selepas log masuk

akan mengeluarkan: ([1 12], []string)

Tetapi saya sentiasa menghadapi masalah jenis dan tidak menemui penyelesaian. Saya mempunyai masalah yang sama menggunakan penegasan atau penukaran jenis.

cannot use myMap (variable of type map[string]string) as map[any]any value in argument to mapToList
Salin selepas log masuk

Bagaimanakah saya harus menulis fungsi maptolist()?

Ia mesti diambil sebagai input inputmap map[any]anyinputmap any kerana saya mahu menghantar sebarang jenis peta (map[string]customstruct; map[int][]customstruct dsb.)

Kemas kini: Saya menambah fungsi dan butiran lanjut tentang input semasa saya mula-mula menulisnya

Penyelesaian

Lihat tutorial ini tentang generik atau Spesifikasi Bahasa

any不是变量类型,它是一个type约束,可以使用的类型的描述。您需要使用约束 any Tentukan parameter jenis dan kemudian rujuk jenis generik daripada tandatangan parameter.

//                                 | from this point on, k and v are
//                                 | now valid types to use in the function
func maptoslice[k comparable, v any](m map[k]v) []v {
    s := make([]v, 0, len(m))
    for _, v := range m {
        s = append(s, v)
    }
    return s
}
Salin selepas log masuk

parameterm必须是map[k]v,其中kcomparable类型,vany类型。返回类型 []v akan menjadi kepingan daripada jenis yang sama seperti nilai dalam peta input.

Sila ambil perhatian, any 不能用作映射键的约束,因为并非所有类型都可以用作键,只有 可比较的 taip.

Kemudian, untuk memanggil kaedah, masukkan jenis yang memenuhi kekangan (cth. map[string][]string), secara pilihan memaparkan parameter jenis secara eksplisit.

m := map[string][]string{
    "a": {"b", "c"},
    "d": {"e", "f"},
}
s := maptoslice(m)
// or
t := maptoslice[string, []string](m)
// [[b c] [e f]]
Salin selepas log masuk

Dengan bersikap eksplisit tentang jenis, anda boleh mendokumenkan kod anda sendiri dan menangkap sebarang isu jenis yang tidak dijangka. Sebagai contoh, kod berikut akan mengembalikan ralat:

v := mapToSlice[string, []int](m)
...
./main.go:14:33: cannot use m (variable of type map[string][]string) as map[string][]int value in argument to mapToSlice[string, []int]
Salin selepas log masuk

Atas ialah kandungan terperinci Fungsi universal untuk menukar Peta kepada Senarai dalam GO. 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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

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

Perbezaan antara kurungan segi empat sama dan kurungan kerinting dalam Vue Perbezaan antara kurungan segi empat sama dan kurungan kerinting dalam Vue May 02, 2024 pm 10:06 PM

Tanda kurung persegi digunakan untuk mengakses elemen tatasusunan, pengikatan sifat dinamik dan sifat yang dikira, manakala kurungan kerinting digunakan untuk mencipta literal objek, ungkapan templat dan kaedah panggilan. Penggunaan yang betul bagi simbol-simbol ini dalam Vue.js adalah penting untuk pemprosesan data yang cekap dan mencipta aplikasi interaktif.

Struktur dan algoritma data Java: penjelasan mendalam Struktur dan algoritma data Java: penjelasan mendalam May 08, 2024 pm 10:12 PM

Struktur data dan algoritma ialah asas pembangunan Java Artikel ini meneroka secara mendalam struktur data utama (seperti tatasusunan, senarai terpaut, pepohon, dll.) dan algoritma (seperti pengisihan, carian, algoritma graf, dll.) dalam Java. Struktur ini diilustrasikan dengan contoh praktikal, termasuk menggunakan tatasusunan untuk menyimpan skor, senarai terpaut untuk mengurus senarai beli-belah, tindanan untuk melaksanakan rekursi, baris gilir untuk menyegerakkan benang, dan pepohon dan jadual cincang untuk carian dan pengesahan pantas. Memahami konsep ini membolehkan anda menulis kod Java yang cekap dan boleh diselenggara.

Cara menggunakan peta dalam vue Cara menggunakan peta dalam vue May 02, 2024 pm 09:54 PM

Peta digunakan dalam Vue.js untuk menyimpan pasangan nilai kunci, yang mana kuncinya boleh daripada sebarang jenis data. Kaedah penggunaan termasuk: mencipta Peta, menambah dan mengakses data, memadam data dan merentasi data. Peta responsif dan mengemas kini paparan secara automatik apabila ia berubah.

Bagaimana untuk melaksanakan struktur data bebas kunci dalam pengaturcaraan serentak Java? Bagaimana untuk melaksanakan struktur data bebas kunci dalam pengaturcaraan serentak Java? May 02, 2024 am 10:21 AM

Struktur data tanpa kunci dalam pengaturcaraan serentak Java Dalam pengaturcaraan serentak, struktur data tanpa kunci adalah penting, membenarkan berbilang urutan mengakses dan mengubah suai data yang sama secara serentak tanpa memperoleh kunci. Ini meningkatkan prestasi aplikasi dan daya pemprosesan dengan ketara. Artikel ini akan memperkenalkan struktur data bebas kunci yang biasa digunakan dan pelaksanaannya dalam Java. Operasi CAS Bandingkan-dan-Tukar (CAS) ialah teras struktur data tanpa kunci. Ia ialah operasi atom yang mengemas kini pembolehubah dengan membandingkan nilai semasa dengan nilai yang dijangkakan. Jika nilai pembolehubah adalah sama dengan nilai yang dijangkakan, kemas kini berjaya jika tidak, kemas kini gagal. Baris gilir tanpa kunci ConcurrentLinkedQueue ialah baris gilir tanpa kunci, yang dilaksanakan menggunakan struktur berasaskan senarai terpaut. Ia menyediakan sisipan dan pemadaman yang cekap

Aplikasi caching PHP Redis dan amalan terbaik Aplikasi caching PHP Redis dan amalan terbaik May 04, 2024 am 08:33 AM

Redis ialah cache nilai kunci berprestasi tinggi. Sambungan PHPRedis menyediakan API untuk berinteraksi dengan pelayan Redis. Gunakan langkah berikut untuk menyambung ke Redis, menyimpan dan mendapatkan semula data: Sambung: Gunakan kelas Redis untuk menyambung ke pelayan. Penyimpanan: Gunakan kaedah yang ditetapkan untuk menetapkan pasangan nilai kunci. Retrieval: Gunakan kaedah get untuk mendapatkan nilai kunci.

Bagaimana untuk menggunakan fungsi PHP untuk memproses data JSON? Bagaimana untuk menggunakan fungsi PHP untuk memproses data JSON? May 04, 2024 pm 03:21 PM

PHP menyediakan fungsi berikut untuk memproses data JSON: Menghuraikan data JSON: Gunakan json_decode() untuk menukar rentetan JSON kepada tatasusunan PHP. Cipta data JSON: Gunakan json_encode() untuk menukar tatasusunan atau objek PHP kepada rentetan JSON. Dapatkan nilai khusus data JSON: Gunakan fungsi tatasusunan PHP untuk mengakses nilai tertentu, seperti pasangan nilai kunci atau elemen tatasusunan.

Kekeliruan untuk Pemula Java: Aplikasi Algoritma dan Struktur Data Kekeliruan untuk Pemula Java: Aplikasi Algoritma dan Struktur Data May 07, 2024 pm 05:57 PM

Panduan Permulaan untuk Java: Aplikasi Dunia Sebenar bagi Algoritma dan Struktur Data Algoritma dan struktur data ialah asas pengaturcaraan Java. Memahami aplikasi mereka adalah penting untuk menulis kod yang cekap dan boleh diselenggara. Artikel ini meneroka penggunaan biasa algoritma dan struktur data dalam senario dunia sebenar untuk membantu anda memahami nilainya. Algoritma Pengisihan Algoritma pengisihan digunakan untuk menyusun senarai elemen dengan teratur. Contohnya: int[]numbers={5,2,8,3,9};//Gunakan algoritma isihan pantas untuk mengisih tatasusunan nombor Arrays.sort(numbers);//Keluarkan tatasusunan yang diisih untuk(intnumber: numbers ){

Struktur dan Algoritma Data Java: Panduan Praktikal untuk Pengkomputeran Awan Struktur dan Algoritma Data Java: Panduan Praktikal untuk Pengkomputeran Awan May 09, 2024 am 08:12 AM

Penggunaan struktur data dan algoritma adalah penting dalam pengkomputeran awan untuk mengurus dan memproses sejumlah besar data. Struktur data biasa termasuk tatasusunan, senarai, jadual cincang, pepohon dan graf. Algoritma yang biasa digunakan termasuk algoritma pengisihan, algoritma carian dan algoritma graf. Dengan memanfaatkan kuasa Java, pembangun boleh menggunakan koleksi Java, struktur data selamat benang dan Koleksi Apache Commons untuk melaksanakan struktur dan algoritma data ini.

See all articles