登录
首页 >  Golang >  Go问答

golang:数组共享在切片之间的应用

来源:stackoverflow

时间:2024-02-14 22:09:23 453浏览 收藏

Golang小白一枚,正在不断学习积累知识,现将学习到的知识记录一下,也是将我的所得分享给大家!而今天这篇文章《golang:数组共享在切片之间的应用》带大家来了解一下##content_title##,希望对大家的知识积累有所帮助,从而弥补自己的不足,助力实战开发!


问题内容

这解释了切片的追加函数。

正如上面所说,append 返回更新后的切片。

这是否意味着新创建的切片不与现有切片共享底层数组?

对于其他切片操作,例如 mySlice[x:y],新切片将与 mySlice 共享底层数组,如下所示。

PS:测试代码:

var names = make([]string, 4, 10)
names1 := append(names, "Tom")

因此在这种情况下,名称中有足够的可用容量。因此追加不能创建新的底层数组。

输出:

[   ]
[    Tom]

输出不应该与共享底层数组相同吗?

我肯定在这里遗漏了一些非常基本的东西。


正确答案


你是对的,names1 使用与 names 相同的底层数组。

不,输出不应该相同,因为 names 的长度为 4,而 names1 的长度为 5。请注意,两者都有容量 (10)。

这是一个示例,可能会稍微澄清这一点:

func main() {
    emptyNames := make([]string, 0, 10)
    notEmptyNames := append(emptyNames, "Jerry")
    extendedNames := emptyNames[:1] // OK, because 1 < cap(emptyNames)
    fmt.Println("emptyNames:", emptyNames)
    //emptyNames: []
    fmt.Println("notEmptyNames:", notEmptyNames)
    //notEmptyNames: [Jerry]
    fmt.Println("extendedNames:", extendedNames)
    //extendedNames: [Jerry]
}

终于介绍完啦!小伙伴们,这篇关于《golang:数组共享在切片之间的应用》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布Golang相关知识,快来关注吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>