Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Menghantar Sepotong Satu Antara Muka kepada Fungsi Mengharapkan Sepotong Antara Muka Serasi tetapi Berbeza dalam Go?

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

Patricia Arquette
Patricia Arquetteasal
2024-10-25 10:22:02220semak imbas

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!

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