Rumah > pembangunan bahagian belakang > Golang > Bagaimanakah Saya Boleh Semak Kewujudan Kunci dalam Berbilang Peta Go Secara Serentak?

Bagaimanakah Saya Boleh Semak Kewujudan Kunci dalam Berbilang Peta Go Secara Serentak?

Linda Hamilton
Lepaskan: 2024-12-13 02:08:09
asal
289 orang telah melayarinya

How Can I Efficiently Check for the Existence of a Key in Multiple Go Maps Simultaneously?

Menyemak Kewujudan Kunci dalam Berbilang Peta Secara serentak

Soalan:

In Go, bila menyemak sama ada kunci yang sama wujud dalam berbilang peta, satu pendekatan ialah menggunakan bendera ok dalam keadaan if, seperti yang ditunjukkan di bawah:

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

Walau bagaimanapun, adalah wajar untuk memekatkan kedua-dua keadaan ini menjadi satu. Bolehkah ini dicapai dengan satu pernyataan if?

Jawapan:

Malangnya, adalah tidak mungkin untuk melakukan semakan kewujudan utama dalam berbilang peta menggunakan syarat if tunggal. Spesifikasi bahasa Go mewajibkan ungkapan indeks (seperti map1["aaa"]) dalam tugasan atau permulaan bentuk v, ok := m[k] menghasilkan nilai boolean tambahan yang tidak ditaip (ok).

Ini menunjukkan bahawa borang khas v, ok := m[k] hanya boleh digunakan apabila tiada apa-apa lagi yang diberikan. Walau bagaimanapun, terdapat pendekatan alternatif jika jenis nilai peta adalah jenis antara muka dan nilai sifar tidak digunakan. Dalam kes ini, anda boleh menggunakan tugasan tuple yang mudah:

if v1, v2 := m1["aaa"], m2["aaa"]; v1 != nil && v2 != nil {
    fmt.Printf("Both maps contain key '%s': %v, %v\n", "aaa", v1, v2)
}
Salin selepas log masuk

Untuk memudahkan lagi proses ini, anda boleh mencipta fungsi pembantu yang melakukan semakan kunci dan mengembalikan nilai dan bendera ok untuk kedua-dua peta:

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

    v1, ok1 = m1[k]
    v2, ok2 = m2[k]
    return
}
Salin selepas log masuk

Kemudian, anda boleh menggunakan fungsi ini untuk melaksanakan satu langkah semak:

if v1, v2, ok1, ok2 := idx(m1, m2, "aaa"); ok1 && ok2 {
    fmt.Printf("Both maps contain key '%s': %v, %v\n", "aaa", v1, v2)
}
Salin selepas log masuk

Dengan menggunakan teknik ini, anda boleh menyemak kewujudan kunci dengan cekap dalam berbilang peta dalam Go.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Semak Kewujudan Kunci dalam Berbilang Peta Go Secara Serentak?. 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