请教一下这句代码的作用

2022-06-21 17:21:00 +08:00
 Verizon

components 是一个参数,类型是[]string ,不知道第四行代码的作用是干啥的。。 求教一下

1	if len(components) == 0 {
2 	  components = []string{":" + verb}
3	} else {
4 	  components = append([]string{}, components...)
5  	 components[len(components)-1] += ":" + verb
6	}
1046 次点击
所在节点    Go 编程语言
7 条回复
Ritter
2022-06-21 17:25:09 +08:00
deep copy 么
molly2mollyzyz
2022-06-21 17:26:19 +08:00
拷贝对象?
zwpaper
2022-06-21 17:43:42 +08:00
得结合上下文,目测是为了复制出来一份 components ,以免影响到函数调用方的 components
Verizon
2022-06-21 17:45:50 +08:00
@zwpaper 感谢,没往这方面想
zwpaper
2022-06-21 17:49:05 +08:00
但是我还有点疑惑,下面是还会给 components 增加内容吗?为啥不用 copy ?
Verizon
2022-06-21 18:12:46 +08:00
@zwpaper 下面有很多读取 components 的操作,应该是为了不影响读取吧
https://stackoverflow.com/questions/27055626/concisely-deep-copy-a-slice
zwpaper
2022-06-21 18:38:36 +08:00
copy 也不影响读取,看你发的 so 的 benchmark ,append 性能不输 copy ,append 代码会简洁些,也许是这个考虑

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/861165

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX