当前位置: 首页 > news >正文

注册网站在哪里创建长春关键词优化报价

注册网站在哪里创建,长春关键词优化报价,wordpress 艺术品主题,网站 国外空间不需要icp许可证吗range是Golang提供的一种迭代遍历手段,可操作的类型有数组、切片、Map、channel等,实际使用频率非常高。 探索range的实现机制是很有意思的事情,这可能会改变你使用range的习惯。 题目一:切片遍历 下面函数通过遍历切片&#xf…

range是Golang提供的一种迭代遍历手段,可操作的类型有数组、切片、Map、channel等,实际使用频率非常高。
探索range的实现机制是很有意思的事情,这可能会改变你使用range的习惯。

题目一:切片遍历

下面函数通过遍历切片,打印切片的下标和元素值,请问性能上有没有可优化的空间?
在这里插入图片描述
程序解释:函数中使用for-range对切片进行遍历,获取切片的下标和元素素值,这里忽略函数的实际意义。
参考答案:遍历过程中每次迭代会对index和value进行赋值,如果数据量大或者value类型为string时,对value 的赋值操作可能是多余的,可以在for-range中忽略value值,使用slice[index]引用value值。

题目二:Map遍历

下面函数通过遍历Map,打印Map的key和value,请问性能上有没有可优化的空间?
在这里插入图片描述
程序解释:函数中使用for-range对map进行遍历,获取map的key值,并跟据key值获取获取value值,这里忽略函 数的实际意义。
参考答案:函数中for-range语句中只获取key值,然后跟据key值获取value值,虽然看似减少了一次赋值,但通 过key值查找value值的性能消耗可能高于赋值消耗。能否优化取决于map所存储数据结构特征、结合实际情况进行。

题目三:动态遍历

请问如下程序是否能正常结束?
在这里插入图片描述
程序解释:main()函数中定义一个切片v,通过range遍历v,遍历过程中不断向v中添加新的元素。
参考答案:能够正常结束。循环内改变切片的长度,不影响循环次数,循环次效在循环开始前就已经确定了。

实现原理

对于for-range语句的实现,可以从编译器源码中找到答案。编译器源码 gofrontend/go/statements.cc/For_range_statement::do_lower() 方法中有如下注释。

在这里插入图片描述
可见range实际上是一个C风格的循环结构。range支持数组、数组指针、切片、map和channel类型,对于不同类型 有些细节上的差异。

range for slice

下面的注释解释了遍历slice的过程:
在这里插入图片描述
遍历slice前会先获以slice的长度len_temp作为循环次数,循环体中,每次循环会先获取元素值,如果for- range中接收index和value的话,则会对index和value进行一次赋值。
由于循环开始前循环次数就已经确定了,所以循环过程中新添加的元素是没办法遍历到的。

另外,数组与数组指针的遍历过程与slice基本一致,不再赘述。

range for map

下面的注释解释了遍历map的过程:
在这里插入图片描述
遍历map时没有指定循环次数,循环体与遍历slice类似。由于map底层实现与slice不同,map底层使用hash表实 现,插入数据位置是随机的,所以遍历过程中新插入的数据不能保证遍历到。

range for channel

遍历channel是最特殊的,这是由channel的实现机制决定的:
在这里插入图片描述
channel遍历是依次从channel中读取数据,读取前是不知道里面有多少个元素的。如果channel中没有元素,则会 阻塞等待,如果channel已被关闭,则会解除阻塞并退出循环。
注:
上述注释中index_temp实际上描述是有误的,应该为value_temp,因为index对于channel是没有意义 的。
使用for-range遍历channel时只能获取一个返回值。

编程Tips

遍历过程中可以适情况放弃接收index或value,可以一定程度上提升性能
遍历channel时,如果channel中没有数据,可能会阻塞
尽量避免遍历过程中修改原数据

总结

for-range的实现实际上是C风格的for循环
使用index,value接收range返回值会发生一次数据拷贝

http://www.lbrq.cn/news/2525941.html

相关文章:

  • 彩票网站建设网站建设的推广渠道
  • 泰安市网站建设公司广告发布平台
  • 湖南网站建设网站制作搜索引擎的网站
  • 招聘网站评估怎么做百度怎么投放自己的广告
  • 专业网站建设套餐快速排名服务平台
  • 深圳软件外包公司列表连云港网站seo
  • 网站内怎样做关键词有效果微信群免费推广平台
  • 国外的自建站平台是什么肇庆seo优化
  • 开创云网站建设支持竞价托管怎么做
  • 平湖网站建设seo综合查询怎么进入网站
  • 范例网站怎么做人力资源培训
  • 网站的建设任务百度旗下的所有产品
  • dreamweaver怎么读南昌seo技术外包
  • 宜宾县企业项目建设影响环境登记表网站肇庆seo
  • 网站建设 开源百度站长工具平台登录
  • 青岛市规划建设局网站网站排名首页前三位
  • 网站后台怎么修改淄博网站制作
  • 济宁网站建设平台百度推广官方
  • seo是搜索引擎优化吗抖音seo优化怎么做
  • 外贸免费网站建设买友情链接有用吗
  • 征婚网站怎么做网站推广策划书模板
  • 青岛互联网设计公司一个具体网站的seo优化方案
  • 公司网站制作需要什么长沙网络营销公司排名
  • 甘肃做高端网站排名网站
  • 南京营销型网站制作网站建设工作总结
  • 汕头百度公司南宁seo推广优化
  • 去设计公司还是去企业焦作网站seo
  • 网站导航做多大网站关键词优化工具
  • 长春 万网 网站建设关键词seo排名优化推荐
  • 维护网站计划书什么软件可以搜索关键词精准
  • 网站技术攻坚与Bug围剿手记
  • 网络的学习 2 Socket
  • 基于 Amazon Bedrock 与 Anthropic Claude 3 智能文档处理方案:从扫描件提取到数据入库全流程实践
  • forge篇——配置
  • 让科技之光,温暖银龄岁月——智绅科技“智慧养老进社区”星城国际站温情纪实
  • AI应用:电路板设计