• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

go语言调用append之后是否重新分配内存?

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/zsy619/article/details/70339670

查看tidb源代码:::util/charset/charset.go,下面有段代码:

// GetAllCharsets gets all charset descriptions in the local charsets.
func GetAllCharsets() []*Desc {
    descs := make([]*Desc, 0, len(charsets))
    // The charsetInfos is an array, so the iterate order will be stable.
    for _, ci := range charsetInfos {
        c, ok := charsets[ci.Name]
        if !ok {
            continue
        }
        desc := &Desc{
            Name:             c.Name,
            DefaultCollation: c.DefaultCollation.Name,
            Desc:             c.Desc,
            Maxlen:           c.Maxlen,
        }
        descs = append(descs, desc)
    }
    return descs
}

查看append,思考一个问题,调用本方法之后,descs内存地址是否重新分配?

特做如下例子进行测试:

type Names struct {
    Name string
}
mynames := make([]*Names, 0)
    for i := 0; i < 10; i++ {
        my := &Names{
            Name: "append"}
        mynames = append(mynames, my)
        fmt.Println(&mynames)
    }

运行结果如下:

从10次的输出结果来看,调用append内部函数,不改变内存地址,也就是不产生性能损耗。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
GO语言开发环境的搭建---Windows环境下发布时间:2022-07-10
下一篇:
Gonet/http发送常见的http请求发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap