安全的Go语言从源数组构建目标Slice

今天在QQ群里聊到GO语言需要改进的地方,快乐的吐槽了一番。我之前最希望用数组构建slice的语法变更一下,因为现在流行的[start:end]方式并不严谨。后来不记得是哪个版本的时候,引入了三段式的[start:end:max]语法来创建slice。这样是安全了,但是确丑了很多。

如下例所示,二段式的定义在append操作后会污染到源数组:

    a := [5]int{1, 2, 3, 4, 5}
    s1 := a[1:3:3]
    s2 := a[1:3]
    _ = append(s1, 6)
    fmt.Println(a)  //out:[1 2 3 4 5]
    _ = append(s2, 7)
    fmt.Println(a)  //out:[1 2 3 7 5]


关于对new函数的改进,chai大帮我发到了邮件组,感谢chai大。

本文来自:开源中国博客

感谢作者:sz_Promi

查看原文:安全的Go语言从源数组构建目标Slice

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。