Maison > développement back-end > Golang > Comment utiliser les tranches Go

Comment utiliser les tranches Go

PHPz
Libérer: 2024-02-05 21:57:12
avant
461 Les gens l'ont consulté

Go 切片的用法

Contenu de la question

Je regarde le code associé à sha1 https://cs.opensource.google/go/go/+/refs/tags/go1.21.5:src/crypto/sha1/sha1.go ;l =146-152

Surtout cette ligne append(in, hash[:]...)

Je ne sais pas pourquoi utiliser hash[:]...,而 hash... semble être suffisant.

Ceci est un code de test 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))
}
Copier après la connexion

Ma question est donc la suivante : que signifie [:] pour le découpage ? Merci! [:] 对于切片来说有什么意义?谢谢!


正确答案


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

Bonne réponse

🎜🎜hash est un tableau (de type [Size]byte), pas une tranche. hash[:] est une tranche — équivalente à hash[0:len(hash)]. La notation ... nécessite une tranche, elle s'applique donc aux tranches hash[:] plutôt qu'aux tableaux hash. 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal