Rumah > pembangunan bahagian belakang > Golang > Bagaimanakah Saya Boleh Menukar Go Array dengan Cekap kepada Slice Tanpa Menyalin Data?

Bagaimanakah Saya Boleh Menukar Go Array dengan Cekap kepada Slice Tanpa Menyalin Data?

Patricia Arquette
Lepaskan: 2024-12-29 00:56:11
asal
267 orang telah melayarinya

How Can I Efficiently Convert a Go Array to a Slice Without Copying Data?

Menukar Tatasusunan kepada Slices dalam Go

Menukar tatasusunan kepada kepingan mungkin kelihatan remeh, tetapi mencari contoh yang jelas dalam talian mungkin mencabar. Artikel ini menyediakan penyelesaian terperinci untuk isu ini, khususnya apabila bekerja dengan tatasusunan bait.

Dalam Go, tatasusunan ialah koleksi nilai bersaiz tetap, manakala sekeping ialah paparan bersaiz dinamik, jenis rujukan ke dalam tatasusunan asas. Untuk menukar tatasusunan bait kepada kepingan bait, sintaks []bait(tatasusunan) boleh digunakan. Walau bagaimanapun, pendekatan ini mencipta salinan data asas, yang mungkin tidak diingini dalam sesetengah senario di mana kecekapan adalah penting.

Kaedah yang lebih cekap ialah menggunakan tatasusunan sintaks hirisan[:]. Ungkapan ini mencipta kepingan yang berkongsi tatasusunan asas dengan tatasusunan asal. Akibatnya, sebarang perubahan yang dibuat sama ada pada kepingan atau tatasusunan akan ditunjukkan dalam kedua-duanya.

Berikut ialah contoh kod yang menunjukkan proses penukaran tanpa membuat salinan data:

package main

import "fmt"

func Foo() [32]byte {
    return [32]byte{'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'}
}

func Bar(b []byte) {
    fmt.Println(string(b))
}

func main() {
    x := Foo()
    Bar(x[:])
}
Salin selepas log masuk

Dalam contoh ini, fungsi Foo mengembalikan tatasusunan bait dan fungsi Bar mengambil sekeping bait sebagai input. Apabila fungsi Bar dipanggil, ungkapan x[:] digunakan untuk mencipta kepingan yang berkongsi tatasusunan asas yang sama seperti x. Sebarang perubahan yang dibuat kepada x akan ditunjukkan dalam kepingan yang dihantar ke Bar, dan begitu juga sebaliknya.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menukar Go Array dengan Cekap kepada Slice Tanpa Menyalin Data?. 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