golang: perkongsian tatasusunan antara kepingan

WBOY
Lepaskan: 2024-02-09 22:42:09
ke hadapan
856 orang telah melayarinya

golang: perkongsian tatasusunan antara kepingan

Editor PHP Zimo akan memperkenalkan anda kepada pengetahuan perkongsian tatasusunan antara kepingan dalam golang dalam artikel ini. Dalam golang, hirisan ialah tatasusunan dinamik yang boleh dikembangkan secara automatik mengikut keperluan. Perkongsian tatasusunan antara kepingan ialah ciri yang sangat penting dalam golang Ia membenarkan berbilang kepingan berkongsi tatasusunan asas yang sama tanpa menyalin data. Ini bukan sahaja menjimatkan ruang memori tetapi juga meningkatkan prestasi. Seterusnya, kami akan menerangkan secara terperinci prinsip dan penggunaan perkongsian tatasusunan antara kepingan.

Kandungan soalan

Ini menerangkan fungsi penambahan kepingan.

Seperti yang dinyatakan di atas, append mengembalikan kepingan yang dikemas kini.

Adakah ini bermakna kepingan yang baru dibuat tidak berkongsi tatasusunan asas dengan kepingan sedia ada?

Untuk operasi penghirisan lain, seperti mySlice[x:y], kepingan baharu akan berkongsi tatasusunan asas dengan mySlice seperti yang ditunjukkan di bawah.

PS: Kod ujian:

var names = make([]string, 4, 10)
names1 := append(names, "Tom")
Salin selepas log masuk

Jadi dalam kes ini terdapat cukup kapasiti yang tersedia dalam nama. Oleh itu append tidak boleh mencipta tatasusunan asas baharu.

Keluaran:

[   ]
[    Tom]
Salin selepas log masuk

Bukankah output sepatutnya sama dengan tatasusunan asas yang dikongsi?

Saya pasti kehilangan sesuatu yang sangat asas di sini.

Penyelesaian

Anda betul, names1 使用与 names tatasusunan asas yang sama.

Tidak, output tidak sepatutnya sama kerana names 的长度为 4,而 names1 mempunyai panjang 5. Ambil perhatian bahawa kedua-duanya mempunyai kapasiti (10).

Berikut ialah contoh yang mungkin menjelaskan perkara ini sedikit:

func main() {
    emptyNames := make([]string, 0, 10)
    notEmptyNames := append(emptyNames, "Jerry")
    extendedNames := emptyNames[:1] // OK, because 1 < cap(emptyNames)
    fmt.Println("emptyNames:", emptyNames)
    //emptyNames: []
    fmt.Println("notEmptyNames:", notEmptyNames)
    //notEmptyNames: [Jerry]
    fmt.Println("extendedNames:", extendedNames)
    //extendedNames: [Jerry]
}
Salin selepas log masuk

Atas ialah kandungan terperinci golang: perkongsian tatasusunan antara kepingan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:stackoverflow.com
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!