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

Comment utiliser les tranches Go

PHPz
PHPzavant
2024-02-05 21:57:12391parcourir

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

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:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer