安庆大理运城常德铜陵江西
投稿投诉
江西南阳
嘉兴昆明
铜陵滨州
广东西昌
常德梅州
兰州阳江
运城金华
广西萍乡
大理重庆
诸暨泉州
安庆南充
武汉辽宁

Go切片内存分配

10月22日 霸鲸观投稿
  切片是数组的抽象。切片使用数组作为底层结构。切片包含三个组件:容量,长度和指向底层数组的指针。
  通过使用append或copy函数可以增加切片的容量。append函数可以为数组的末尾增加值,并在需要时增加容量。s:〔〕string{}fori:0;i10;i{sappend(s,i)t。Log(len(s),cap(s))}123456slicetest。go:25:11slicetest。go:25:22slicetest。go:25:34slicetest。go:25:44slicetest。go:25:58slicetest。go:25:68slicetest。go:25:78slicetest。go:25:88slicetest。go:25:916slicetest。go:25:101612345678910
  当前储存空间存不下数据时,空间会以之前的空间数2
  比如:numbers:make(〔〕int,5,10)numbersappend(numbers,1,2,3,4,5)t。Log(numbers,cap(numbers))123
  定义numbers的数组长度为5,空间给他10,并追加数据到切片。slicetest。go:11:〔0000012345〕101
  空间为10,当我们再添加一个数据到切片时候,空间是多少了呢?numbers:make(〔〕int,5,10)numbersappend(numbers,1,2,3,4,5,6)t。Log(numbers,cap(numbers))123slicetest。go:11:〔00000123456〕201
  得到数据为20,和我们设想的一样。注意
  切片中的数据是共用内存,也就是我们选区切片区间的某一个值,并且在这个小对象中进行数据的修改,会影响整个切片的值,在开发当中非常要注意这种。
  举个例子:numbers:make(〔〕int,5,10)numbersappend(numbers,1,2,3,4,5)t。Log(numbers,cap(numbers))first:numbers〔5:7〕second:numbers〔6:8〕t。Log(first,len(first),cap(first))t。Log(second,len(second),cap(second))second〔0〕9t。Log(first,len(first),cap(first))t。Log(second,len(second),cap(second))t。Log(numbers)12345678910111213
  取了一个first和second这两个数据重合的数据是2。
  打印一下:slicetest。go:11:〔0000012345〕10slicetest。go:15:〔12〕25slicetest。go:16:〔23〕24slicetest。go:19:〔19〕25slicetest。go:20:〔93〕24slicetest。go:21:〔0000019345〕123456
  虽然在second中修改了数据,但是影响到了大对象numbers的数据,还有一个要注意的是,first小对象,他的内存分配是5,second的空间是4,这是为啥呢?原来,这样取的小对象切片,的空间是这个切片加上大对象末尾的值
  开发中如果修改了其中的一个变量,但是又不想影响大对象,这个时候会傻掉。
  那如何去获取一个和numbers一样的数据,但是又不会影响numbers呢?
  我们copy一份numbersnumber2:make(〔〕int,len(numbers))copy(number2,numbers)t。Log(number2,cap(numbers),cap(number2))number2〔0〕9t。Log(number2,numbers,cap(numbers),cap(number2))12345678
  输出一下结果:slicetest。go:11:〔0000012345〕10slicetest。go:15:〔12〕25slicetest。go:16:〔23〕24slicetest。go:19:〔19〕25slicetest。go:20:〔93〕24slicetest。go:21:〔0000019345〕slicetest。go:25:〔0000019345〕1010slicetest。go:29:〔9000019345〕〔0000019345〕101012345678
  好,不懂在座的各位看懂了没有。没有影响的,通过copy切片再去修改切片的值,是不会印象原切片的。
  关于切片的知识,还远远不止这些,后续遇到问题,再补充吧,欢迎关注
投诉 评论 转载

成年人如何选择适合自已的助听器?(郑医生回答)对于助听器的选择,需要根据每个人的听力的状况。在能满足正常听到声音的情况下,尽量配小一些,比方说塞在耳朵里面的。但有些人听力特别差,需要的功率比较大,就要用耳背式……血奴事件的背后58同城为何至今屹立不倒血奴事件已经过去好多天了,受害者直言,其是通过58同城找工作被骗的,58同城一个神奇的网站,至今,还存活着确实非常的神奇。那么,像这样的网站为何至今屹立不倒呢?最初,58……vivoX70系列预热搭载骁龙888处理器9月3日,vivo官微公布了vivoX70系列更多配置信息,将搭载骁龙888Plus处理器。vivoX70系列所采用的骁龙888Plus是最新的旗舰级处理器,与骁龙888……vivoX80王者旗舰,峡谷亮剑4月29日即将开售的双芯旗舰vivoX80,不仅在影像方面再次一骑绝尘,在性能,显示领域又有新突破。整个拉高了用户的期待值,想带它去峡谷游走一番。性能至上,打造天玑900……8月手机不要乱买这几款是性价比之王好看配置强最值得你购买8月份已经很快地到月底了,这个时候买手机的朋友一定要注意了,截止到今天,各大手机厂商已经发布了多款新机了,其中不乏当家的旗舰机,可千万不要乱买,小心挑花了眼,买不好的话要交学费……Go切片内存分配切片是数组的抽象。切片使用数组作为底层结构。切片包含三个组件:容量,长度和指向底层数组的指针。通过使用append或copy函数可以增加切片的容量。append函数可以为……曾经的联通去哪了?撸在非洲丛林里,无事看看数书。忽悠一个案例很值得分享。一开始中国有移动,联通,网通,铁通,四个运营商。后来国家要合并,联通收购网通,结果开会一看,网通领导比联通的多多了,……联通移动广电电信宽带有什么区别?资费哪个更便宜?我是网络极客,全新视角、全新思路,带你遨游神奇的网络世界。联通、移动、广电、电信宽带从不同的角度分析,各有各的优势,各有各的劣势,但是从综合素质来看,首推电信、联通,其次……Excel求和只会sum函数就out了,这五个求和公式一个比说到数据求和,可能90的朋友第一时间想到的求和函数就是sum函数。因为这个函数可以快速的对数据进行单一维度或多维度数据求和。今天我们来学习一下,数据求和过程中,5个高效的求和公……目前最值得购买的几款曲面屏,性能颜值兼备,用着有面子曲面屏手机排行榜2021最新,曲面屏手机哪款性价比高比较好。曲面屏手机也是当今社会上手机的最热卖点之一,曲面屏手机可以更好的保护视力,分辨率更精准。小米11小米11采用四……华为称正自研芯片解决方案旗舰手机的5G支持迟早回归12月2日,对华为消费者业务中东欧、北欧以及加拿大地区总裁DerekYu的一段采访被罗马尼亚媒体公开。在谈到旗舰手机未来在欧洲市场如何发展时,DerekYu表示,华为将持……Redmi小爱触屏音箱Pro8真实体验,好用,便宜,真香因为装修的时候没有预设计全屋智能,所以后来就慢慢添置了一些智能家居,好在这些产品都接入了米家,通过一台小爱同学,实现了全屋智能。入手的是Redmi小爱触屏音箱Pro8,我……
数字藏品具体是什么?有价值吗?值得收藏吗?华为储备军的5所大学,没毕业就被公司签约了,前程似锦Java代码评审都是怎么开展的呢?为啥华为不进军吹风机行业?这个行业壁垒很高么?华为新年致辞,要有质量的活下来任正非路过华为实验室,发现高薪聘请的年轻工程师在打游戏新能源汽车公共充电桩是快充还是慢充如果当时柳传志自己拿钱办公司,他是否能超越联想成为世界教父?上游电池原材料价格飞涨,新能源汽车集体调高售价3nm2nm芯片不重要了?中芯国际700亿投产28nm,获得那些二三十万的电脑是怎么配出来的?突破!国产4800万像素液晶芯片来了,全球最高像素

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找七猫云易事利