Rumah  >  Artikel  >  pembangunan bahagian belakang  >  golang: perkongsian tatasusunan antara kepingan

golang: perkongsian tatasusunan antara kepingan

WBOY
WBOYke hadapan
2024-02-09 22:42:09848semak imbas

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

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

Keluaran:

[   ]
[    Tom]

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

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

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam