slice初始化的疑问

来源:2-5 编码实战:实现多个文件查询信息接口

拧壶冲

2020-10-21

本章提到代码有点问题,如果使用:

fMetaArray := make([]FileMeta, len(fileMetas))

我的理解是make会将slice初始化,append方法执行应该都是加到最后吧。
是不是因为:使用len(fileMetas)后再append,slice是循环append的,因为最后一个元素有值(被make初始化)的所以导致append到第一个了,然后每次都因为slice是满的,每次append都会把新元素append到第一的位置。所以会导致无论执行多少次append,fileMetas的最后一个append到fMetaArray的第一个,fMetaArray后面其他的元素实际还是make初始化出来的NilObject,是这样吗?

写回答

2回答

四十个大盗

2020-11-29

代码修改为:
fMetaArray := make([]FileMeta, 0, len(fileMetas))
更加合理

0
0

xiaomo

2020-10-22

同学你好,视频内这部分代码有问题,已经加了瞄点说明哈,具体修改后的代码可以参考:https://git.imooc.com/coding-323/filestore-server/src/charter2/meta/filemeta.go

0
0

Go实战仿百度云盘-实现企业级分布式云存储系统

紧随“云时代”技术潮流,分布式云存储系统,做第一代云程序员

1077 学习 · 494 问题

查看课程