Rumah > pembangunan bahagian belakang > Golang > Mengapa Menambah Tatasusunan Slice Byte dalam Go Menghasilkan Ralat Tidak Dijangka?

Mengapa Menambah Tatasusunan Slice Byte dalam Go Menghasilkan Ralat Tidak Dijangka?

Susan Sarandon
Lepaskan: 2024-12-03 00:03:16
asal
127 orang telah melayarinya

Why Does Appending Byte Slice Arrays in Go Produce Unexpected Errors?

Melampirkan Tatasusunan Slice Dua Bait dalam Go: Memahami Ralat Tidak Dijangka Append

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
Salin selepas log masuk

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
Salin selepas log masuk

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[:]...))
    ...
}
Salin selepas log masuk

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!

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