Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Mengulang dengan Selamat Melalui peta[rentetan]*Tempah Selepas Menukar daripada antara muka{}?

Bagaimana untuk Mengulang dengan Selamat Melalui peta[rentetan]*Tempah Selepas Menukar daripada antara muka{}?

Susan Sarandon
Lepaskan: 2024-12-01 11:53:11
asal
528 orang telah melayarinya

How to Safely Iterate Over a map[string]*Book After Converting from interface{}?

Menukar antara muka{} kepada Peta dengan Lelaran

Dalam kod anda, anda menghadapi ralat semasa cuba menukar antara muka{} kepada peta . Untuk menyelesaikan isu ini dan mendayakan lelaran ke atas elemen peta, ikut langkah berikut:

Gunakan Penegasan:

Ganti pendekatan berasaskan pantulan dengan penegasan jenis langsung, seperti yang ditunjukkan dalam kod di bawah:

func process(in interface{}, isSlice bool, isMap bool) {
    if isMap {
        v := in.(map[string]*Book)
        fmt.Printf("Type: %v\n", v)
        for _, s := range v {
            fmt.Printf("Value: %v\n", s)
        }
    }
}
Salin selepas log masuk

Pernyataan ini memberikan nilai antara muka{} kepada pembolehubah jenis peta[rentetan]*Tempah jika syarat dipenuhi. Pendekatan ini lebih cekap dan tidak memerlukan refleksi.

Sebagai alternatif, anda boleh menggunakan pernyataan suis untuk mengendalikan pelbagai jenis input tanpa menggunakan pantulan.

Gunakan Kekunci Peta Tersuai dengan Refleksi ( Pilihan):

Jika anda masih perlu menggunakan refleksi, anda boleh mendapatkan semula kunci peta menggunakan Value.MapKeys dan bukannya berulang terus ke atas nilai. Lihat jawapan Stack Overflow yang disebut dalam penyelesaian yang disediakan untuk butiran tentang pendekatan ini.

Atas ialah kandungan terperinci Bagaimana untuk Mengulang dengan Selamat Melalui peta[rentetan]*Tempah Selepas Menukar daripada antara muka{}?. 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