首頁  >  文章  >  後端開發  >  Go 切片的用法

Go 切片的用法

PHPz
PHPz轉載
2024-02-05 21:57:12391瀏覽

Go 切片的用法

問題內容

我正在查看sha1 相關程式碼https://cs.opensource.google/go/go/ /refs/tags/go1. 21.5:src/crypto/sha1/sha1.go;l=146-152

尤其是這一行 append(in, hash[:]...)

我不確定為什麼要使用 hash[:]...,而 hash... 似乎就夠了。

這是一段測試程式碼 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))
}

所以我的問題是 [:] 對切片來說有什麼意義?謝謝!


正確答案


hash 是一個陣列(類型為 [Size]byte),而不是切片。 hash[:] 是一個切片 — 相當於 hash[0:len(hash)]... 表示法需要一個切片,因此它套用到切片 hash[:] 而不是陣列 hash

以上是Go 切片的用法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:stackoverflow.com。如有侵權,請聯絡admin@php.cn刪除