So verwenden Sie Go-Slices

PHPz
Freigeben: 2024-02-05 21:57:12
nach vorne
400 Leute haben es durchsucht

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))
}
Nach dem Login kopieren

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!

Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage