Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Saya Boleh Mengelak Penegasan Jenis dalam Kes Suis Jenis Go?

Bagaimanakah Saya Boleh Mengelak Penegasan Jenis dalam Kes Suis Jenis Go?

DDD
DDDasal
2024-12-07 03:29:09344semak imbas

How Can I Avoid Type Assertions in Go's Type Switch Cases?

Cara Mengelakkan Penegasan Jenis dalam Cawangan Suis Jenis

Dalam Go, suis jenis biasanya digunakan untuk mengendalikan objek daripada jenis yang berbeza. Walau bagaimanapun, secara manual menegaskan jenis objek dalam setiap kes boleh menjadi membosankan. Soalan ini menangani isu menghapuskan keperluan untuk pernyataan sedemikian.

Soalan Asal:

Saya menggunakan suis jenis seperti berikut:

switch question.(type) {
case interfaces.ComputedQuestion:
    handleComputedQuestion(question.(interfaces.ComputedQuestion), symbols)
case interfaces.InputQuestion:
    handleInputQuestion(question.(interfaces.InputQuestion), symbols)
}

Adakah terdapat cara untuk menghalang penegasan jenis eksplisit di dalam kes?

Jawapan:

Ya, anda boleh mengelakkan penegasan jenis dengan memberikan hasil suis jenis kepada pembolehubah jenis yang dijangkakan. Ini memberikan anda jenis yang ditegaskan tanpa memerlukan penegasan lanjut.

switch question := question.(type) {
case interfaces.ComputedQuestion:
    handleComputedQuestion(question, symbols)
case interfaces.InputQuestion:
    handleInputQuestion(question, symbols)
}

Dalam contoh ini, ungkapan soalan := question.(type) memberikan hasil suis jenis kepada pembolehubah soalan. Suis jenis itu sendiri kekal tidak berubah.

Pendekatan ini memudahkan kod anda dengan menghapuskan keperluan untuk penegasan jenis manual dalam kes, menjadikannya lebih ringkas dan lebih mudah dibaca.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengelak Penegasan Jenis dalam Kes Suis Jenis Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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