Go   发布时间:2022-04-09  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Golang:make,slice和append的一个小细节大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

这两天写代码的时候遇到了这么一个问题,就是向slice追加元素的这么一个简单的小问题,却由于疏忽,堵了好久,现在分享一下,避免以后再犯。

代码开始是这么写的:

urls := @H_961_6@make(@H_549_8@map[@H_404_10@String]@H_404_10@String, 3)
// 这里随便个例子
urls["baidu"] = "www.baidu.com"
urls["google"] = "www.google.com"
urls["csdn"] = "www.csdn.net"

names := @H_961_6@make([]@H_404_10@String,len(urls))
for key,_ := range urls {
    names = append(names,key)
}

乍一看,似乎应该就是这样,但实际上呢?我们先来看打印一下names,

fmt.Println(names)

得到了这样的输出

当时写的匆忙,看了一眼输出,只是疑惑了一下,怎么多了接个几个空格?但没太在意,就是这么几个看上去的空格把我给坑惨了,后面获得的数据死活不对,在打印一下names的长度:

到这里问题应该就很明显了,低级失误啊!

我天真的以为我创建了一个空的slice,然后用append就能将他填满, 但是现实是append无论如何都是向slice的尾部追加数据,他才不管你slice空不空呢,原来的slice只有3个长度,现在每一次append都要重新分配一次内存,几次操作以后早已是物是人非了,所以只有老老实实的从[0]开始挨个向里填数据吧!

大佬总结

以上是大佬教程为你收集整理的Golang:make,slice和append的一个小细节全部内容,希望文章能够帮你解决Golang:make,slice和append的一个小细节所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。