Rumah > pembangunan bahagian belakang > Golang > Bagaimanakah Saya Boleh Menyemak Kewujudan Utama Merentasi Pelbagai Peta Go dengan Cekap dalam Keadaan Tunggal?

Bagaimanakah Saya Boleh Menyemak Kewujudan Utama Merentasi Pelbagai Peta Go dengan Cekap dalam Keadaan Tunggal?

Barbara Streisand
Lepaskan: 2025-01-06 00:22:39
asal
975 orang telah melayarinya

How Can I Efficiently Check for Key Existence Across Multiple Go Maps in a Single Condition?

Menentukan Kewujudan Utama Merentasi Pelbagai Peta

Apabila bekerja dengan berbilang peta, selalunya perlu untuk menyemak sama ada kunci khusus wujud dalam semua mereka. Manakala pendekatan berikut adalah biasa:

if v1, ok1 := map1["aaa"]; ok1 {
    ...
}
if v2, ok2 := map2["aaa"]; ok2 {
    ...
}
Salin selepas log masuk

ia melibatkan berbilang pernyataan if. Adakah terdapat cara yang lebih ringkas untuk melaksanakan semakan ini dalam satu syarat?

Percubaan untuk Mengumpul Sintaks

Satu penyelesaian yang mungkin adalah menilai kewujudan utama dalam kedua-dua peta dan kemudian semak persimpangan mereka:

v1, ok1 := map1["aaa"]
v2, ok2 := map2["aaa"]
if ok1 && ok2 {
    ...
}
Salin selepas log masuk

Walau bagaimanapun, pendekatan ini memerlukan penugasan dan penyemakan dalam dua berasingan langkah.

Penghadan Pemeriksaan Kunci Syarat Tunggal

Nampaknya, bahasa Go tidak membenarkan untuk menyemak berbilang kewujudan kunci dalam satu syarat if. Menurut spesifikasi Go, ungkapan indeks pada peta menghasilkan nilai boolean tambahan yang menunjukkan kehadiran atau ketiadaan kunci. Sintaks khas ini hanya boleh digunakan dalam tugasan atau permulaan.

Oleh itu, tidak mungkin untuk melakukan semakan kewujudan kunci gabungan hanya menggunakan borang v khas, ok := m[k].

Alternatif untuk Pemeriksaan Kewujudan Utama

Jika jenis nilai peta ialah jenis antara muka dan boleh dijamin tidak mempunyai nilai nil, pendekatan alternatif ialah menggunakan tuple-assignment untuk menyemak kewujudan kunci:

if v1, v2 := m1["aaa"], m2["aaa"]; v1 != nil && v2 != nil {
    ...
}
Salin selepas log masuk

Untuk kes yang lebih kompleks, fungsi pembantu boleh dibuat untuk merangkum logik penyemakan kewujudan kunci :

func idx(m1, m2 map[string]interface{}, k string) (
    v1, v2 interface{}, ok1, ok2 bool) {

    v1, ok1 = m1[k]
    v2, ok2 = m2[k]
    return
}

// Usage example:
if v1, v2, ok1, ok2 := idx(m1, m2, "aaa"); ok1 && ok2 {
    ...
}
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menyemak Kewujudan Utama Merentasi Pelbagai Peta Go dengan Cekap dalam Keadaan Tunggal?. 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