golang make指定长度的疑问

tohilary
  • 91

伪代码:

containers := make([]string, len(faces))
for _, face := range faces {
    if face == FaceNil {
        break
    }
    containers := append(containers, face)
}

如果这样直接申明10个length的底层数组,那么循环下来,假设face有FaceNil的情况,就会出现切片元素有nil的情况,然后在另外一个地方循环containers变量的时候就需要判断是否有元素为nil,但是make([]string, 0)的话nil就不存在,大家遇到这种情况的最佳写法是什么?

评论
阅读 1.4k
2 个回答
func main() {
    a := make([]int, 0, 10)
    for i := 0; i < 10; i++ {
        if i == 5 {
            break
        }
        a = append(a, i)
    }
    fmt.Printf("%+v, len: %d, cap: %d", a, len(a), cap(a))
}

第三个是容量,cap. 而且你的containers := append(containers, face). 重新赋值了。

sorry 看到这个问题的大佬无视吧,我错误的理解make的第二个参数,第二个参数如果指定长度,那么这个slice有零值,我以为没有零值

撰写回答

登录后参与交流、获取后续更新提醒

宣传栏