golang make指定长度的疑问

发布于 2022-09-12 00:04:00 字数 382 浏览 17 评论 0

伪代码:

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就不存在,大家遇到这种情况的最佳写法是什么?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

友欢 2022-09-19 00:04:00
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). 重新赋值了。

独自唱情﹋歌 2022-09-19 00:04:00

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文