Bagaimanakah anda menukar tatasusunan bersaiz tetap kepada kepingan bersaiz berubah-ubah dalam Go?

Susan Sarandon
Lepaskan: 2024-11-08 21:37:02
asal
301 orang telah melayarinya

How do you convert a fixed-size array to a variable-sized slice in Go?

Menukar Tatasusunan Saiz Tetap kepada Tatasusunan Bersaiz Boleh Ubah dalam Go

Apabila bekerja dengan tatasusunan dan kepingan dalam Go, adalah penting untuk memahami perbezaannya. Tatasusunan ialah struktur data bersaiz tetap, manakala kepingan bersaiz berubah-ubah dan lebih fleksibel.

Dalam contoh yang diberikan, anda cuba menukar tatasusunan saiz tetap 32 bait ([32]bait) kepada kepingan bersaiz berubah-ubah ([]bait). Walau bagaimanapun, mencuba ini secara langsung dengan b := []bait(a) akan mengakibatkan ralat kompilasi.

Penyelesaian

Untuk berjaya menukar tatasusunan saiz tetap kepada kepingan bersaiz berubah-ubah, ikut sintaks ini:

b := a[:]
Salin selepas log masuk

Dengan menggunakan sintaks a[:], anda mencipta hirisan yang merujuk tatasusunan asas elemen. Ini dikenali sebagai "menghiris" tatasusunan. Potongan b yang terhasil akan mempunyai elemen yang sama seperti tatasusunan asal a tetapi akan berkelakuan seperti kepingan bersaiz berubah-ubah, membolehkan anda mengubah suai panjangnya secara dinamik.

Contoh

package main

import (
    "fmt"
)

func main() {
    var a [32]byte
    b := a[:]
    fmt.Println(len(b)) //prints 32, indicates the initial length of b matches array a
    b = b[5:] //slicing the slice b, modifies its length
    fmt.Println(len(b)) //prints 27, indicating the new length of b after slicing
}
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimanakah anda menukar tatasusunan bersaiz tetap kepada kepingan bersaiz berubah-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