游戏电视苹果数码历史美丽
投稿投诉
美丽时装
彩妆资讯
历史明星
乐活安卓
数码常识
驾车健康
苹果问答
网络发型
电视车载
室内电影
游戏科学
音乐整形

Go开发03切片彻底研究(三)

  这篇根据底层分析切片
  切片实际对应的是一个结构typeSlicestruct{arrayunsafe。Pointerlenintcapint}
  三个成员依次是数据指针,长度和容量。现在我们主要来看函数调用functestslice(b〔〕int){bappend(b,100)fmt。Println(b)}funcmain(){创建切片a,长度为0,容量为10varamake(〔〕int,0,10)追加5个元素之后,长度为5,容量为10aappend(a,1,2,3,4,5)调用函数testslice(a)fmt。Println(a)}
  代码比较简明,我们重点看实参和形参。
  如前文所述,切片对应的是一个结构,那么可以认为把实参a传过去,相当于将a的结构体传过去,这一步理解至关重要。
  接着,形参实参一结合,b就得到一份a的结构副本。由于当前a容量还有5个元素,因此追加100之后,没有扩容。所谓的扩容主要就是指结构成员的array指针发生变化。
  因此b和a依然共享同一段切片内存。打印结果b〔〕int{1,2,3,4,5,100},但是打印a却等于a〔〕int{1,2,3,4,5},没有发生变化,这是为什么呢?
  原因就在于,切片b追加之后,它的长度len也跟着变化。但是原来a的结构体内部的len并没有变化,因此为了能看到a确实共享同一个切片,需要将a的切片长度进行修正。
  补充:如果学过C语言,我们想像有一个结构类型structSlice{inta;intb;intc;};
  当将结构传值传过去时,成员a,b,c就复制一个副本,因此,如果副本发生变化和原结构一点都没关系。类比切片的结构,len是一个int,也是一样只是传个副本。。。testslice(a);aa〔:6〕修正a的长度fmt。Println(a)
  再次打印可以看到1,2,3,4,5,100。扩容导致指针变化
  现在我们看一下扩容的例子functestslice(b〔〕int){追加三个元素,导致切片扩容bappend(b,20,21,22)fmt。Println(b)}funcmain(){创建切片a,长度为0,容量为10varamake(〔〕int,0,10)追加8个元素之后,长度为8,容量为10aappend(a,1,2,3,4,5,6,7,8)调用函数testslice(a)fmt。Println(a)}
  分析:
  调用函数后,由于追加3个元素,而原切片只剩2个元素,因此需要切片扩容。所谓切片扩容用一个词来形容就是另起炉灶,和原切片完全脱离关系,因为是在新内存中创建的。
  那么b结构体中的array指针发生变化,指向新地址值。而原切片由于脱离关系不受干扰,还是原样。
  结果:
  b〔〕int{1,2,3,4,5,6,7,8,20,21,22}
  a〔〕int{1,2,3,4,5,6,7,8}
  想通过函数改变原切片
  如果就想通过函数改变原切片怎么办呢?上面的例子我们可以看出,实际是一个值传递的问题,我们能不能牢牢的控制结构内部的指针还属于a呢?自然就想到将切片的指针传过去,相当于C语言中将结构体的地址传过去。形参传为切片的地址functestslice(b〔〕int){追加三个元素,导致切片扩容bappend(b,20,21,22)fmt。Println(b)}funcmain(){创建切片a,长度为0,容量为10varamake(〔〕int,0,10)追加8个元素之后,长度为8,容量为10aappend(a,1,2,3,4,5,6,7,8)调用函数,传切片地址testslice(a)fmt。Println(a)}总结
  完美的三篇文章!应对实际开发中绝大部分场景。

全国首例裂谷热病裂谷热病是什么病?近期的全国检查出裂谷热病,让大家对这种病症开始重视起来。此次疫情传播扩散风险较小,但是还是要对这种病症做出了解。这是一种夏季病。全国首例裂谷热病裂谷热病是什么病?裂谷热病……林内热水器怎么用?林内热水器使用方法林内热水器是被很多人都熟知的品牌,是一个日本的牌子。不少人困惑,林内热水器怎么用呢?关于,林内热水器怎么用?林内热水器使用方法。5号网小编来为您一一解答!林内热水器怎么用……新链游CurtisSword吊打西坦和飞船?潜力直追ILV?CurtisSword是一款去中心化的元宇宙3DNFTARPG移动端游戏,创立于2020年,目标是探寻加密世界及区块链游戏中Token、NFT的价值。CurtisSword来源……美国什么保健品值得买美国什么保健品好美国人身体都倍棒,是不是很羡慕呢?不要羡慕,这都是保健品的功劳。不为速效,岁月常服必获大益,保健品这种东西也讲究坚持,如果功课到位,它无疑是我们健康的得力助手。在选择保健品的时……澳佳宝保健品怎么样?澳佳宝保健品有用吗?澳佳宝是澳洲的一个保健品牌!在国内也是热销量非常好的保健品牌。有不少人困惑,澳佳宝保健品有用吗?关于,澳佳宝保健品怎么样?澳佳宝保健品有用吗?5号网小编来为您一一解答!澳……520和521是什么意思?520和521哪个更好?如今很多数字都被大家赋予了特殊的含义,在这个具有特殊含义的日子,很多人都会庆祝一番。那么,520和521是什么意思?520和521哪个更好?521和520是什么意思520……隐翅虫有毒吗?隐翅虫会毁容吗?女孩睡梦中觉得脖子痒随手一拍,一觉醒来竟毁容,原来是误以为是虫子但是却是一种叫做隐翅虫的飞虫,而关于隐翅虫引起的皮肤问题也是屡见不鲜,那么,关于隐翅虫你知道多少?它有毒吗?被咬……10款恐龙游戏推荐,玩方块方舟玩家能用高科技暴揍霸王龙作为地球曾经的统治者,恐龙自从被发现化石就对人类有着极高的魅力,人们不断的研究恐龙化石,妄想将这种史前巨兽再现到这个世界上,而游戏却率先做到了这件事,今天我就来给大家推荐10款……夏天孕妇可以睡凉席吗孕妇睡凉席的注意事项凉席是很常见的一种夏季生活用品,夏天的天气炎热,睡一半的床单被子都很闷热,凉席的触感冰凉清爽,很适合夏天的时候降温使用。夏天孕妇可以睡凉席吗孕妇夏天是可以睡凉席的,夏天的……藏红花和西洋参能一起泡水喝吗适量喝有好处藏红花和西洋参是非常常见的中药,那么,藏红花和西洋参能一起泡水喝吗?藏红花和西洋参能一起泡水喝吗可以一起泡水喝西洋参有补气养阴和清火生津的功效,多于用阴虚火旺和气阴……青海建成,获得首幅行星图像PAST星冕仪成功获得了首幅行星图像!这标志着赛什腾山冷湖天文观测基地正式安装运行的最大口径光学望远镜已正式进入工作状态。日前,记者从冷湖行星地质观测中心了解……洗眼液可以天天用吗?洗眼液多久用一次?洗眼液可以冲洗掉眼睛内的杂质并且起到杀菌的作用,今天5号网小编就要为大家解答一下,洗眼液可以天天用吗?洗眼液多久用一次?洗眼液是什么其实严格来讲,洗眼液算的上是医药……
及时止损,是中年人应有的自律01hr古人说:义,小为之则小有福,大为之,则大有福;于祸则不然,小有之部落其亡也。积攒福气,需要一点一点积累;惹祸则不同,一点小小的祸端,就能毁掉全部。很多时候,……层次高的父母,从不当着孩子面做这4件事真正用心的父母,才能培养出真正称心的孩子。乐爸来源网络儿童教育家孙敬修说过:孩子的眼睛是录像机,孩子的耳朵是录音机,父母个人的言行,对于未成年人的心灵,……到北京不去万里长城是莫大的遗憾万里长城,始建于战国时期,世界第七大奇迹,东起山海关,西至嘉峪关,跨群山,穿莽原,横瀚海,坚固的城楼,雄伟壮观,长城绵延数千里,前不见头,后不见尾,犹如一条巨龙环绕群山之中。……金铲铲之战S6赌狗阵容哪家强?变异圣盾大嘴上分香在金铲铲之战S6双城传说版本中,那些前期可成型的阵容被大家称为赌狗阵容,这些阵容往往都是一些低费卡,很容易升到三星,然后在中期血入对手,导致很多后期阵容撑不到成型的那一刻。赌狗……金鸡奖红毯林允粉色花苞长裙,优雅大气,尽显甜美气质又到金鸡奖闭幕式,晚会前的红毯上是众多女星争奇斗艳各显美貌的重要环节。甜妹林允今晚一袭粉色露肩花苞裙亮相红毯,人鱼姬珍珠妆浪漫热情,繁花相衬,少女在三角梅花的映衬下更显优雅灵动……2021年大盘点寺庙篇散落在神州大地的无数宗教建筑群是我国古建筑的重要组成部分,包括了佛教、道教、伊斯兰教、基督教、天主教等不同宗教,足见中原文化的包容与宏大,绝非狭隘的一神论世界所能比拟的。……CBA三消息北控今夏首签诞生,丁彦雨航瘦10斤,可兰仅租借一大家好呀,我是北柠,各位小伙伴们要养成先赞后看的习惯哦!北控队这个休赛期是肯定会有球员交易出现的,这个赛季球队的成绩让俱乐部非常不满意,他们很有可能会产生比较大的球员阵容……这个暑假朋友圈一半的人都去的旅游地,你还不赶紧行动炎热的暑期还有不到一个月的时间就要过去了,你不会还窝在家里,哪都没去过吧,那也太可惜了。趁着暑假这个好时间,来一场清爽舒适暑期之旅吧,不负好时光!下面小编推荐给大家5个暑期必去……2000年来唯有3人敢用?古代取名忌讳的一个字,如今却四处可在中国,为孩子取名字是一件十分严肃的事情,因为名字中会包含很多的意义。姓氏代表你的家族,名能代表父母长辈对你的期望和希望。当然,在现代取名只需要考虑好不好听,而在古代取名……国家出手了,社保挂靠时代或者结束,谁还敢挂靠社保?社保挂靠的人要注意啦,或许社保挂靠的时代要终结了。所谓社保挂靠,一般来说是个人跟挂靠单位不存在合法的劳务关系,但是却让单位为其缴纳社保,这就是不合法的行为,因为你连基本的……什么是气虚?气虚都有哪些表现?刘医生教你如何正确调理气虚大家好,我是刘医生,今天来跟大家讲一讲中医常说的气虚到底是什么又该如何调理呢?首先我们来看一下气虚都有哪些表现、它的症状有哪些?一般是肺、脾、肾三脏的气虚最多,特别是肺,……头胎是生儿子好还是生女儿好?先生哪个差别大,父母别不在意文小雪妈妈二胎政策开放以来,虽然很多人都表示不会生,但现实情况是观察身边很多家庭,生二胎的也不在少数,有的是单纯地想要孩子,也有的和头胎是生的男孩还是女孩有关,并不是重男……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网