小编典典

声明切片还是制作切片?

go

在Golang中,var s []int和之间有什么区别s := make([]int, 0)

我发现这两种方法都可行,但是哪一种更好?


阅读 246

收藏
2020-07-02

共1个答案

小编典典

除了fabriziom的答案外,您还可以在“转到切片:用法和内部方法”中看到更多示例,其中[]int提到了的用法:

由于slice(nil)的零值就像 零长度的slice一样 ,您可以声明slice变量,然后在循环中附加到该变量:

// Filter returns a new slice holding only
// the elements of s that satisfy f()
func Filter(s []int, fn func(int) bool) []int {
    var p []int // == nil
    for _, v := range s {
        if fn(v) {
            p = append(p, v)
        }
    }
    return p
}

这意味着,要附加到切片,您不必先分配内存:nil切片p int[]足以作为要添加的切片。

2020-07-02