添加元素重新开辟空间与否取决初始化切片的方式,似乎这是bug?大伙速速进来看下!

anko · · 1102 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。

<h1 style="color:red">添加元素重新开辟空间与否取决初始化切片的方式,似乎这是bug?大伙速速进来看下!</h1> ![添加元素重新开辟空间与否取决初始化切片的方式.png](https://static.studygolang.com/190916/7739dda874d456a23ad71775fb1efd17.png) **************************************************************************** ![添加元素重新开辟空间与否取决初始化切片的方式111.png](https://static.studygolang.com/190916/77fdae882e043d19d03a95ec434018b5.png) <h1 style="color:red">元芳,你怎么看??</h1> ### <h1 style="color:red">经过仔细思考,我只能感叹自己真的还不了解数组和切片(这坑太大),现给出原因如下: </h1> ![添加元素重新开辟空间与否取决初始化切片的方式222.png](https://static.studygolang.com/190916/e972cdf715926427f888519e9690bb1b.png) 在这给出源代码,便于复制粘贴: ```go package main import ( "fmt" ) func main() { //myint:=make([]int,5,5) myint:=make([]int,5,6) //给足够的空间 fmt.Printf("--初始化时候slice addr:--%p---len:%v----cap:%v\n",myint,len(myint),cap(myint)) //myint= []int{ // 1,10,2,4,5, //} myint[0]=1 myint[1]=10 myint[2]=2 myint[3]=4 myint[4]=5 fmt.Printf("--初始化时候slice addr:--%p---len:%v----cap:%v\n",myint,len(myint),cap(myint)) //myint=append(myint, 1,10,2,4,5) fmt.Printf("--初始化时候slice addr:--%p---len:%v----cap:%v\n",myint,len(myint),cap(myint)) fmt.Printf("--值为:--%v---\n",myint) fmt.Println() for key, value := range myint { //fmt.Printf("-%p---",&value) index:=2; fmt.Printf("-%v---\n",myint) fmt.Println(key,"第",key+1,"次遍历,此时全部元素为:",myint) fmt.Println(key,"---此次遍历元素为:---",value) if key==1{ after:=append([]int{},myint[index:]...)//用新切片保存插入位置之后的元素 fmt.Printf("= after==%p==%v=\n",after,after) myint=append(myint[0:index],9)//用新元素插入到相应位置组成前置切片 fmt.Printf("= front==%p==%v=\n",myint,myint) myint=append(myint,after...)//原地合并前后2个位置的切片元素 fmt.Printf("= myint==%p==%v=\n",myint,myint) } fmt.Println() } fmt.Printf("--最后时候slice addr:--%p---",myint) fmt.Printf("--值为:--%v---\n",myint) } ```

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1102 次点击  ∙  2 赞  
加入收藏 微博
5 回复  |  直到 2019-09-19 20:14:43
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传