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
Susan Sarandonasal
2024-11-08 11:39:02608semak imbas

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)
}

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[:]

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!

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