Heim >Backend-Entwicklung >Golang >So verwenden Sie Go-Slices

So verwenden Sie Go-Slices

PHPz
PHPznach vorne
2024-02-05 21:57:12436Durchsuche

Go 切片的用法

Frageninhalt

Ich schaue mir den sha1-bezogenen Code https://cs.opensource.google/go/go/+/refs/tags/go1.21.5:src/crypto/sha1/sha1.go an ;l =146-152

Besonders diese Linie append(in, hash[:]...)

Ich bin mir nicht sicher, warum die Verwendung von hash[:]...,而 hash... auszureichen scheint.

Dies ist ein Testcode https://go.dev/play/p/DaIa0X4KyeD

func main() {
    s := make([]int, 2, 10)
    s[0] = 1
    s[1] = 2

    d := []int{88}
    d = append(d, s[:]...) // d = append(d, s...) seems to work the same
    fmt.Printf("d is: (%v)\n", d)
    fmt.Printf("d len is: (%v)\n", len(d))
    fmt.Printf("d cap is: (%v)\n", cap(d))
}

Meine Frage ist also, was [:] für das Schneiden bedeutet? Danke! [:] 对于切片来说有什么意义?谢谢!


正确答案


hash 是一个数组(类型为 [Size]byte),而不是切片。 hash[:] 是一个切片 — 相当于 hash[0:len(hash)]... 表示法需要一个切片,因此它应用于切片 hash[:] 而不是数组 hash

Richtige Antwort

🎜🎜hash ist ein Array (vom Typ [Size]byte), kein Slice. hash[:] ist ein Slice – äquivalent zu hash[0:len(hash)]. Die ...-Notation erfordert ein Slice und gilt daher für Slices hash[:] und nicht für Arrays hash. 🎜

Das obige ist der detaillierte Inhalt vonSo verwenden Sie Go-Slices. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen