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

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 消耗大。

一个人的福气,看这三点古人有言见微而知著,以小而见大。看到细微的苗头,我们就能推测发展的方向。所有的细节,都将整体的一面,真真实实地表现了出来。不论是看透一件事,还是看透一个人,我们最好从细微之处入手。北汽瑞翔追逐梦想,追光而行!旅行的意义在于放慢脚步感受生活让心灵回归宁静来一场慢节奏的旅行静静欣赏沿途旖旎风光享受闲适时光与美好不期而遇北汽瑞翔专列开启追光之旅伴您寻找自然之美专列往返于西安与喀什之间领略草原五百二十亿!中芯国际大展拳脚,外媒台积电的梦想或成为泡影五百二十亿!中芯国际大展拳脚,国外媒体台积电的梦想或成为泡影中芯国际日前宣布,将投入520亿人民币,在天津新建一家12寸晶片工厂,该工厂主要生产28纳米至180纳米制程芯片,预计每这个地方越大越有福?其实这2点才是福气的象征,快看有你家娃没作者探长(共1345字,阅读约4分钟)每一位父母都对自己孩子的未来,抱有非常大的期望和祝福。他们都希望孩子成年后能过上幸福快乐的生活,也希望他们能在未来做出一番成就,他们把世间所有呼声大销量小,岚图梦想家碎了新能源MPV的梦?岚图梦想家,这台新能源MPV在几个月前可是网络上的热门产品,甚至说从亮相之初到正式发售之前它都是处于聚光灯之下,相关的报道哪怕不是爆款,也都是在成为爆款的路上。那时候的梦想家似乎成一个人值不值得付出真心,看这一点就够了听过一句话欣赏一个人,始于颜值,合于性格,久于善良,终于人品。一个人值不值得付出真心,最终得看他的人品。尊重比你地位低的人,是高级的教养有位读者在后台留言说您说我们开出租车的就容易最后一队退出!亚洲杯无人举办,取消或成定局,国足争冠梦想破灭距离2023年男足亚洲杯还剩下不到一年的时间,然而目前还没有确定由哪个国家来承办。而就在北京时间9月2日,根据权威媒体的报道,最后一个有意愿承办亚洲杯的国家澳大利亚也宣布退出,这使梦想世界3活动电脑版限时,增加召唤标签功能人等级30,活动期间累计活动量可获得开学称号,提高称号等级。当职称等级达到一定级别,可以获得入学礼包。增加召唤兽标记功能。召唤属性界面增加了新的标签功能。你可以为召唤只对你自己可见2023会爆发金融危机吗?世界银行开始发出警告!普通人该怎么办?全球首富马斯克预言说,金融危机将在2022年夏季爆发,最迟在2023年!股神巴菲特手握1492亿美元现金储备,规模创纪录新高,而每次股神手握大量现金的时刻,就预示着新一轮的危机即将破7!人民币贬值,对普通人影响巨大9月15日央行正式将外汇存款准备金率由8下调至6,这本来是有利于人民币升值的,而降低外汇存准率的当天,人民币兑美元汇率时隔两年后再次贬值破7!时间段如此巧合,很难相信外汇市场没有被剧情雷人,低俗,魔改严重,这8部低分作品,刷新了我的认知最近,张翰自导自演的一部东八区的先生们因为低俗的剧情,可以说被观众喷得很惨,而评分也是再创国产影视剧新低。当然每年出品的烂剧也不少,但至少还是能看的地步,不过总有几部特别差的作品,
2022年全年社会物流总额预计超340万亿元记者今天(2月6日)从中国物流与采购联合会了解到,2022年,我国物流业经受疫情冲击需求不足和成本上升多重压力,总体实现平稳运行,主要经济指标实现平稳增长。0140据介绍,2022总投资791亿元!博罗183宗制造业项目集中动工投产春光正好,干字当头。2月6日,博罗县2023年制造业项目集中动工投产活动在博罗智能装备产业园园洲片区举行,共有183宗项目集中动工投产,总投资791亿元,将为博罗在县域高质量发展中基金高开低走,今天可不可以加仓老杨,我现在也是重仓,定投什么时候加大合适。这是一位铁粉朋友的留言,谢谢这位铁粉朋友。什么时候加大定投,跟你的仓位有关系,我因为是满仓,所以在春节前就调低了定投的额度,变成了每只基1月卖出1700台挖掘机!生产订单排到4月份!外贸商家开年忙接单累并快乐着钱江晚报小时新闻记者祝瑶刚刚过去的春节档,敢想敢拼的外贸人是如何度过的?阿里国际站工业平板商家罗畅过年期间在朋友圈晒订单阿里国际站鞋靴商家过年期间在朋友圈晒订单一边过年,一边接单。这次,我们好像真的要面临人工智能(chatgpt)危机了近日,一款名为chatgpt的人工智能程序以前所未有的速度,席卷了各大领域和行业,它的聪慧程度,甚至让无数从业者不寒而栗,开始担忧失业的可能。我这可不是危言耸听,夸大其词。美国北密讲完故事我先溜这家企业坑深且连环丨泰凌微IPO摸摸口袋仅剩的两枚钢镚上池君心生一计,先买彩票中个奖,满仓杀入股市,财务自由指日可待。可惜第一阶段没能成功突围,彩票中心连换取五元的机会都没给到真要中了奖结局未必能够如愿!随着注册李铁火遍亚洲,亚足联或清退中国足协人员亚洲足球遭受耻辱好事不出门,坏事传千里,这是亘古不变的一个真理。这不,李铁案已经在整个亚洲被传得沸沸扬扬的,亚足联都感觉到丢人了。作为国家队的主帅竟然把自己为国效力的机会变成了争分夺秒的捞金时机。王健林带着万达杀回来了来源伯虎财经(bohuFN)作者梦得上帝是不是站在了王健林身后?2022年,王健林和万达又出现在大家面前。王健林抄底同行,4月5月分别拿下北京SOLANA蓝色港湾五棵松卓展购物中心半导体市场行情监测报告2023年1月半导体行情速递行业风向标全球半导体销售额下降2022年11月全球半导体行业销售额为455亿美元,环比下降2。9,同比下降9。2(SIA)IC进口首次下降2022年集成电路进口量从2这些板块可以加仓,这些板块需要远离,黑猫总结一下2月财经新势力空仓是一种态度,梭哈是一种智慧,我是黑猫,我为散户代言!该空仓的时候一分不留,该满仓的时候一分不剩,这就是黑猫玩基金的态度,上升趋势中每个月追求稳定10的利润,你可以分析理想L9用车成本!月均花费1152元!值不值得入手?近年来,新能源汽车的发展犹如雨后春笋般拔地而起,推出的车型也越来越多,主要以电机为驱动方式,可以节省一定的用车成本,那么话又说回来,养一台大型SUV花费是多少呢?今天我们以理想L9