Bagaimana untuk Menghantar Sepotong Satu Antara Muka kepada Fungsi Mengharapkan Sepotong Antara Muka Serasi tetapi Berbeza dalam Go?

Patricia Arquette
Lepaskan: 2024-10-25 10:22:02
asal
236 orang telah melayarinya

How to Pass a Slice of One Interface to a Function Expecting a Slice of a Compatible but Different Interface in Go?

Melalui Slice Antara Muka kepada Slice Antara Muka Serasi Berbeza

Dalam Go, anda mungkin menghadapi cabaran apabila cuba melepasi sekeping antara muka kepada fungsi yang menjangkakan sepotong antara muka yang berbeza tetapi serasi. Walaupun item tunggal boleh diluluskan dengan jayanya, kepingan antara muka asal mungkin gagal.

Sebagai contoh, jika anda mempunyai dua antara muka, A dan B, di mana A termasuk B, dan pelaksanaan konkrit A yang juga memenuhi B , anda mungkin menghadapi masalah ini. Menghantar item individu jenis A kepada fungsi yang mengharapkan io.Reader akan berfungsi, tetapi cuba menghantar kepingan A kepada fungsi yang menjangkakan []io.Reader akan gagal.

Ini kerana Go adalah statik bahasa taip dan tidak membenarkan penukaran jenis tersirat. Untuk menyelesaikan isu ini, anda mesti membuat kepingan baharu jenis yang dijangkakan dan menetapkan elemen daripada kepingan asal secara manual. Dalam contoh yang diberikan, mesej ralat mencadangkan bahawa []A tidak boleh diberikan terus kepada []io.Reader.

Oleh itu, penyelesaian yang disyorkan ialah membuat kepingan baharu []io.Reader dan menyalin elemen daripada []A hirisan secara manual. Ini memastikan bahawa fungsi menerima jenis hirisan yang betul seperti yang diharapkan.

Atas ialah kandungan terperinci Bagaimana untuk Menghantar Sepotong Satu Antara Muka kepada Fungsi Mengharapkan Sepotong Antara Muka Serasi tetapi Berbeza dalam Go?. 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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!