Rumah >pembangunan bahagian belakang >Golang >Mengapa Menambah Tatasusunan Slice Byte dalam Go Menghasilkan Ralat Tidak Dijangka?
Apabila cuba menambahkan hirisan tatasusunan dua bait dalam Go, ralat yang berkaitan dengan data yang tidak serasi mungkin berlaku jenis. Dalam kod yang disediakan, isu timbul apabila cuba menggunakan []bait sebagai argumen untuk fungsi append() variadic.
Spesifikasi Bahasa Pengaturcaraan Go mentakrifkan sintaks untuk append() sebagai:
append(s S, x ...T) S // T is the element type of S
Di sini, s ialah kepingan yang unsur-unsur sedang dilampirkan, dan x ialah senarai pelbagai unsur yang akan ditambahkan. Jenis T mesti sepadan dengan jenis elemen S.
Dalam kod contoh, satu dan dua adalah kedua-dua hirisan tatasusunan bait, jadi jenis elemennya ialah []bait. Walau bagaimanapun, hujah akhir dua[:] tidak diikuti oleh ..., yang bermaksud bahawa Go cuba untuk menganggapnya sebagai nilai []bait tunggal dan bukannya sekeping. Ini mengakibatkan ralat:
cannot use two[:] (type []uint8) as type uint8 in append
Untuk menyelesaikan ralat ini, anda perlu menggunakan ... selepas hujah kepingan terakhir untuk menunjukkan bahawa ia adalah kepingan variadic. Kod yang diperbetulkan ialah:
package main import "fmt" func main() { one := make([]byte, 2) two := make([]byte, 2) ... fmt.Println(append(one[:], two[:]...)) ... }
Dengan mengikut sintaks ini, Go akan menambah elemen dua[:] dengan betul menjadi satu[:].
Atas ialah kandungan terperinci Mengapa Menambah Tatasusunan Slice Byte dalam Go Menghasilkan Ralat Tidak Dijangka?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!