go语言调用append之后是否重新分配内存?
2024-08-28 17:18:29
查看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内部函数,不改变内存地址,也就是不产生性能损耗。
最新文章
- tp5 中 model 的新增方法
- 探测FTP状态,socket方式
- web应用程序 ---- 日志系统的设计
- mongodb数据结构学习1--增删改查
- Json工具类 - JsonUtils.java
- hdu 4271 动态规划
- 从最近MySQL的优化工作想到的
- android:layout_weight属性的简单使用
- map——映射(message.cpp)
- CodeForces - 788B Weird journey 欧拉路
- [LeetCode] Next Greater Element II 下一个较大的元素之二
- Codeforces Round #401 (Div. 2)
- #VSTS日志# Xamarin构建支持和一大波更新
- JavaEE开发之基于Eclipse的环境搭建以及Maven Web App的创建
- C# 复选框显示多项选择
- Java基础总结3
- TensorFlow走过的坑之---数据读取和tf中batch的使用方法
- 终于,我还是下决心学Java后台了
- OpenID
- 第20课-数据库开发及ado.net 可空值类型,资料管理器,多条件查询,Case
热门文章
- BZOJ.4910.[SDOI2017]苹果树(树形依赖背包 DP 单调队列)
- Android软件设计规范---命名规则/代码包设计规则等
- php 将两个数组进行相加 http://blog.csdn.net/lcstrive/article/details/38331487
- Oracle内置函数
- assets 与 res 目录的区别
- Django——日志
- 什么是OKR?
- sql 2008 查询性能优化笔记
- JAVA自学笔记08
- 100本Python精品书籍(附pdf电子书下载)