Saya akan mempelajari dasar-dasar go, menemukan ini di tur di sini.

Saya tidak mengerti mengapa nilai array tidak 0 atau nihil setelah s = s[:0]

func main() {
    s := []int{2, 3, 5, 7, 11, 13}
    printSlice(s)

    // Slice the slice to give it zero length.
    s = s[:0]
    printSlice(s)

    // Extend its length.
    s = s[:4]
    printSlice(s)

    // Drop its first two values.
    s = s[2:]
    printSlice(s)
}

func printSlice(s []int) {
    fmt.Printf("len=%d cap=%d %v\n", len(s), cap(s), s)
}

Keluaran:

len=6 cap=6 [2 3 5 7 11 13]
len=0 cap=6 []
len=4 cap=6 [2 3 5 7]
len=2 cap=4 [5 7]
-1
solmans 28 Maret 2020, 21:32

1 menjawab

Jawaban Terbaik

Slice adalah tampilan pada array. Sepotong hanya akan membuat larik baru yang lebih besar dan menyalin konten jika kapasitasnya terlampaui. Sebuah irisan akan terus menggunakan larik aslinya jika Anda memotongnya. Saat Anda membuat irisan yang lebih kecil, irisan tersebut masih menggunakan larik pendukung lama dengan konten yang tersisa dari operasi sebelumnya. Saat Anda menambahkan irisan itu, itu akan terus menggunakan larik yang sama hingga Anda melebihi kapasitas.

0
Burak Serdar 28 Maret 2020, 18:37