Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Menukar Tatasusunan Saiz Tetap kepada Slice Bersaiz Boleh Ubah dalam Go?

Bagaimana untuk Menukar Tatasusunan Saiz Tetap kepada Slice Bersaiz Boleh Ubah dalam Go?

Susan Sarandon
Lepaskan: 2024-11-08 11:39:02
asal
574 orang telah melayarinya

How to Convert a Fixed-Size Array to a Variable-Sized Slice in Go?

Menukar Tatasusunan Saiz Tetap kepada Tatasusunan Bersaiz Boleh Ubah (Kepingan) dalam Go

Anda sedang cuba menukar tatasusunan saiz tetap ( [32]bait) kepada kepingan bersaiz berubah-ubah ([]bait) menggunakan kod berikut:

package main

import (
    "fmt"
)

func main() {
    var a [32]byte
    b := []byte(a)
    fmt.Println(" %x", b)
}
Salin selepas log masuk

Walau bagaimanapun, pengkompil mengembalikan ralat:

./test.go: 9: tidak boleh menukar (taip [32]bait) kepada menaip []bait

Ralat ini berlaku kerana penukaran langsung daripada tatasusunan bersaiz tetap kepada hirisan tidak dibenarkan dalam Go. Untuk menyelesaikannya, anda harus menggunakan operator hirisan ([:]) untuk mendapatkan hirisan ke atas tatasusunan sedia ada:

var a [32]byte
b := a[:]
Salin selepas log masuk

Ini akan mencipta hirisan (b) yang merujuk elemen dalam tatasusunan (a ). Potongan akan mempunyai tatasusunan sandaran yang sama seperti tatasusunan asal, tetapi panjang dan kapasitinya akan dilaraskan secara dinamik.

Untuk mengetahui lebih lanjut tentang perbezaan antara tatasusunan dan kepingan dalam Go, rujuk catatan blog komprehensif ini:

[Arrays and Slices in Go](https://blog.golang.org/go-slices-usage-and-internals)

Atas ialah kandungan terperinci Bagaimana untuk Menukar Tatasusunan Saiz Tetap kepada Slice Bersaiz Boleh Ubah 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