范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

Golang面试题切片Slice和数组比较

  Go 数组是值类型,赋值和函数传参操作都会复制整个数组数据。
  切片slice是引用传递,不需要额外的内存,而切片本身是一种数组指针的封装。
  下面是一个数组传参测试输出:func Test1() { 	array1 := [2]int{100, 200} 	array2 := array1  	fmt.Printf("array1: %p, %v ", &array1, array1) 	fmt.Printf("array2: %p, %v ", &array2, array2)  	printArray(array1) }  func printArray(x [2]int) { 	fmt.Printf("func array: %p, %v ", &x, x) }array1: 0xc000271590, [100 200] array2: 0xc0002715a0, [100 200] func array: 0xc0002715d0, [100 200]
  假想每次传参都用数组,那么每次数组都要被复制一遍。这样会消耗掉大量的内存。于是乎有人想到,函数传参用数组的指针。
  但是传递数组指针会有一个弊端,万一原数组的指针指向更改了,那么函数里面的指针指向都会跟着更改。
  所以说把第一个大数组传递给函数会消耗很多内存,采用切片的方式传参可以避免上述问题。切片是引用传递,所以它们不需要使用额外的内存并且比使用数组更有效率。
  当然也有特例,借用一个package main  import "testing"  func array() [1024]int { 	var x [1024]int 	for i := 0; i < len(x); i++ { 		x[i] = i 	} 	return x }  func slice() []int { 	x := make([]int, 1024) 	for i := 0; i < len(x); i++ { 		x[i] = i 	} 	return x }  func BenchmarkArray(b *testing.B) { 	for i := 0; i < b.N; i++ { 		array() 	} }  func BenchmarkSlice(b *testing.B) { 	for i := 0; i < b.N; i++ { 		slice() 	} }   func git:(main)   go test -bench . -benchmem -gcflags "-N -l" goos: darwin goarch: amd64 pkg: func cpu: Intel(R) Core(TM) i5-5257U CPU @ 2.70GHz BenchmarkArray-4          339076              3028 ns/op               0 B/op          0 allocs/op BenchmarkSlice-4          281892              4295 ns/op            8192 B/op          1 allocs/op PASS ok      func    4.364s
  这样对比看来,并非所有时候都适合用切片代替数组,因为切片底层数组可能会在堆上分配内存,而且小数组在栈上拷贝的消耗也未必比make 消耗大。

中超山东泰山平北京国安12月29日,山东泰山队球员金敬道(左)和北京国安队球员李磊在比赛中争抢。当日,在广州举行的2021赛季中国足球超级联赛第20轮(第二阶段)争冠组比赛中,山东泰山队以1比1战平北京21中18!砍38分18板,阿的江终于拥有了自己的超级球员新疆队遭到6连败CBA常规赛第15轮,新疆队面对近期表现出色的上海队,最终,以112121输给了对手9分,新疆队再次遭到失利之后,球队迎来了一波尴尬的6连败,现在的球队似乎已经变得奥尼尔和邓肯生涯交手62次,谁的表现更加优秀?数据不会说谎在小球时代来临前,大个子球员一直都在主导联盟局势,以00年代为例,奥尼尔和邓肯是当时内线的代表性球员,两人荣誉满满,要数据有数据,要成就有成就。奥尼尔是最具统治力的中锋,而邓肯是历李磊含泪告别国安,比利奇送祝福他愿意去欧洲闯荡很有勇气记者寒冰报道29日国安战泰山,这一场比赛恰逢北京国安俱乐部成立29周年,俱乐部董事长周金辉在赛前特意发文庆祝,球队当然不希望在这个时间输掉比赛。这一天是俱乐部的生日,对我们来说肯定广东年轻锋线赛季报销!这比2连败更让人难受!杜锋也无可奈何啊CBA第二阶段对于卫冕广东宏远来说,情况并不顺利。先后输给了浙江广厦和山西,2场比赛总计输了38分。真的有很长一段时间,没有看到CBA霸主连败了。至于输球,我觉得不需要过分解读,谁韩媒评选新赛季最值得期待的中单选手KnightDoinb最近韩媒InvenGlobal举办了第二届InvenGlobal全球大奖(IGA),由InvenGlobal编辑团队以及其他一些有经验的记者和分析师来参与投票,票选出2021年年度日本之印象日本之浅印象,我是2018年底退休,2019年初夏来日本探亲旅游三个月。一切从头说起,当飞机飞越女儿所在日本城市的上空时,激动之情跃然心头,不是因为初次来日本旅游激动,而是在这陌生严惩CBA球员崔晓龙!掀翻邹雨宸黑脚险废张帆,8倍镜还原寒心1幕12月29日,CBA常规赛第十五轮的比赛继续进行,北控队遭遇了江苏队的挑战,北控队之前已经遭遇了三连败,球队的状态并不算好,球队的排名也跟赛季开始阶段相比有了下滑。而江苏队这边他们雀魂今日举行企业日本麻将比赛角川SE等知名游戏公司参加二次元少女日本麻将游戏雀魂于今日举行四届冬季娱乐企业对抗赛。比赛于今日(12月19日)下午北京时间13点开始,预计会在20点结束。比赛会在油管直播。来自日本16家公司的代表选手将通8核变4核!欧拉汽车被诉偷换汽车芯片涉嫌欺诈,网友不要让支持国产的消费者失望中国经济周刊经济网讯据央视财经报道,上海市的周女士,11月份购买了一部欧拉好猫新能源车,最吸引她的是品牌方宣称的搭载了高通八核车载芯片,能实现丰富的车载功能。而周女士提车后发现,欧虎牙直播迎来老主播之间的对抗,网友这波玩得真大随着互联网的发展,直播这个行业可以说是风生水起,在传播信息和交友互动方面发挥着不可替代的作用。而虎牙作为直播平台中的老大哥,更是以自身强劲实力向广大网友显示了一个更加精彩绝伦的世界
两边老人换着带娃,为何奶奶一来就不要姥姥?原来是带娃理念不同家长百问百答文兰妈谈育儿育儿过程就像是一项建筑工程,不同的教育理念和带娃方式,最终都会带来不同的结果都说,一个女人最幸福的事情就是工作有贵人相助,生活有老公疼,孩子有老人帮忙带所以观影实录灾难动作末日电影末日逃生陨石政府地堡影视杂谈末日逃生Greenland宇宙中的两颗彗星正急速向地球逼近,未来它们终将撞上地球并带来无法估量的损失。为了避免造成世界级的恐慌,政府封锁了这一消息,在格陵兰岛建造了坚固的堡京通可以办理社保缴费了!快来看看近日,支付宝百度京通健康宝小程序社保费办理业务正式上线了。您可以登录支付宝百度客户端,关注京通健康宝小程序,进入社会保障栏目,使用社保费办理功能,办理城乡居民基本医疗费灵活就业人员你能接受终身租房吗?我国会出现租房一代吗?文维辰近四成青年群体接受终身租房,我国会出现租房一代吗?媒体日前报道,北京航空航天大学公共管理学院副教授聂晨调查认为,一线城市房价长期高位运行,加上近年来就业市场波动,若完全放任租做人,一定要管好自己的嘴,别说这三种话,避免祸从口出!做人,一定要多积累口德。一个人的嘴,往往反映了其内在的心理,其个人素质与修养也展露无疑。有的人说话很动听,让人很乐于接受,这就是埋藏在心底的素养。而有的人则咄咄逼人,说话没好气,仿永远不要你期待的那些所谓依靠,而是你卡里的那串数字!人到中年,头脑一定要保持清醒啊,不然等老了走不了爬不动的时候,那种滋味可是不好受的。当你老了,不中用了,躺在病床上的时候,你身边所有的人,大概率最后你谁都指望不上,很真实千万别不信试着放下,也是一种生活态度人生有很多追求,包括事业和情感。回过头来看,很多都脱离不了宿命。其实所谓宿命,是一种假象,是一种对执着的纠错。爱一个人的时候,其实这个人的缺点和优点,都同时存在,只是你关注的更多是夜读当你迷茫的时候,不妨试试这件事拥有目标感。有人说,总感觉自己一无是处,不明白生活的意义是什么,找不到自己的方向,只是一味地被生活拖着走,哪有目标可言。如果内心没有目标,即使每天忙忙碌碌,也感受不到生活的乐趣。古残忍!FPX不敌JDG光速被零封,刷新四大赛区最短比赛记录随着2023英雄联盟LPL春季赛的进行,如今常规赛阶段的赛程已经来到后半段,积分榜的排名形势也逐渐趋于明朗。相比此前几个赛季,今年LPL的格局迎来了大洗牌,因为联赛顶尖选手的人员变B社官方玩具风俯视角清屏毁灭战士手游公布贝塞斯达日前公布了毁灭战士改编的手机游戏MightyDOOM。这是一款俯视角,仅需单手操控的清屏射击游戏。根据官方介绍,游戏设定在毁灭战士动画宇宙中,将以类肉鸽玩法为核心。玩家将能刘德华流浪地球2香港单日票房破13万,被称为近10年最佳影片刘德华流浪地球2上映32天,展现了超强的票房续航能力,累计票房突破38。5亿,海外票房达到800万美元,一票难求的盛况令人羡慕。影片香港上映第13天,单日票房突破13万港币,稳居第