Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Menaip Asert Slices Nilai Antara Muka dalam Go?

Bagaimana untuk Menaip Asert Slices Nilai Antara Muka dalam Go?

Patricia Arquette
Lepaskan: 2024-12-07 16:40:13
asal
848 orang telah melayarinya

How to Type Assert Slices of Interface Values in Go?

Taip Menegaskan Slices Nilai Antara Muka

Apabila cuba menaip menegaskan sepotong nilai antara muka, anda mungkin menghadapi ralat yang serupa dengan:

invalid type assertion: args.([]Symbol) (non-interface type []Node on left)
Salin selepas log masuk

Ralat ini berlaku kerana kepingan adalah jenis yang berbeza, bukan antara muka. Untuk memahami sebabnya, mari kita periksa sifat antara muka dalam Go.

Antara muka ialah jenis yang mentakrifkan satu set kaedah yang mesti dilaksanakan oleh sesuatu nilai. Apabila anda mencipta pembolehubah jenis antara muka, jenis dinamiknya tidak tetap, membenarkan ia menyimpan nilai dari mana-mana jenis yang melaksanakan antara muka.

Walau bagaimanapun, hirisan ialah koleksi nilai jenis tertentu, iaitu固定 daripada satu jenis. Ia tidak mempunyai sebarang kaedah, menjadikannya jenis bukan antara muka. Oleh itu, tidak masuk akal untuk mengandaikan bahawa sekeping nilai antara muka juga merupakan antara muka.

Penyelesaian

Untuk menyelesaikan ralat ini, anda boleh menukar nilai dalam kepingan kepada yang dikehendaki secara eksplisit taip, seperti dalam kod berikut:

symbols := make([]Symbol, len(args))
for i, arg := range args { symbols[i] = arg.(Symbol) }
Salin selepas log masuk

Kod ini mencipta kepingan baharu jenis yang diingini dan berulang melalui kepingan asal, menukar setiap nilai kepada jenis yang dikehendaki. Ini membolehkan anda menggunakan nilai yang ditegaskan jenis dalam kod anda tanpa menghadapi ralat penegasan jenis.

Atas ialah kandungan terperinci Bagaimana untuk Menaip Asert Slices Nilai Antara Muka 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