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

怎么建一个公司运营网站如何进行搜索引擎的优化

怎么建一个公司运营网站,如何进行搜索引擎的优化,用wp系统做网站,想制作自己的网站吗for-range for-range其实是正常for循环的一种语法糖,在go语言中可以遍历arr,slice,map和channel等数据结构,但是在一些初学者使用for-range可能会遇见很多坑,这篇文章会带你探索一下for-range中非常有趣的一些实现机制…

for-range

for-range其实是正常for循环的一种语法糖,在go语言中可以遍历arr,slice,map和channel等数据结构,但是在一些初学者使用for-range可能会遇见很多坑,这篇文章会带你探索一下for-range中非常有趣的一些实现机制。

for-range遍历数组和slice

先来看两道题目:

  1. 从数组中遍历获取一个指针元素切片的集合
arr := [2]int{1, 2}
res := []*int{}
for _, v := range arr {res = append(res, &v)
}
//expect: 1 2
fmt.Println(*res[0],*res[1]) 
//but output: 2 2

答案:从程序中可以看出我们预期输出的为1、2,但实际上却输出了2、2的答案。

  1. 在for-range遍历中append切片
v := []int{1, 2, 3}
for i := range v {v = append(v, i)
}

答案:上面代码遍历是会停止的。

好了,可能有些朋友看完上面两段代码的最终结果已经开始疑惑了,接下来我们来看一下for-range对
数组和slice的处理方法。

// len_temp := len(range)
// range_temp := range
// for index_temp = 0; index_temp < len_temp; index_temp++ {
//     value_temp = range_temp[index_temp]
//     index = index_temp
//     value = value_temp
//     original body
//   }

看上面这段源代码我们可以看出,for-range内部调用其实还是for循环,初始化会拷贝待遍历的列表,然后每次遍历的v都是对上面源码value_temp这同一个元素的赋值。

  1. 这就可以说明我们的题1中为什么输出的会是2、2,对题1v取地址,最终只会拿到一个地址(实际地址:&value_temp),而对应的值就是最后遍历的那个元素所附给v的值。

想得到预期值有两种方案:

  • 使用局部变量
for _, v := range arr {//局部变量v替换了v,也可用别的局部变量名v := v res = append(res, &v)
}
  • 直接索引获取原来的元素
//这种其实退化为for循环的简写
for k := range arr {res = append(res, &arr[k])
}
  1. 题2也就很好说明了,因为遍历次数在遍历前就已经确定下来了(len_temp),所以题2最终只会循环三次。

for-range遍历map

还是先看两道题目:

  1. 对map遍历时删除这个元素,下一次遍历还能遍历到吗?
var m = map[int]int{1: 1, 2: 2, 3: 3}var o sync.Once 
for i := range m {o.Do(func() {for _, key := range []int{1, 2, 3} {if key != i {fmt.Printf("when iteration key %d, del key %d\n", i, key)delete(m, key)break}}})fmt.Printf("%d%d ", i, m[i])
}

答案:如果删除的元素还没有被遍历到(上边once.go函数内保证第一次执行时删除未遍历的一个元素),那么后面就不会出现。因为我们都知道map在for-range遍历中是无序遍历的,这是因为map底层数据结构就是一个链式hash表,并且初始化的时候会随机一个遍历开始的位置,所以如果还没被遍历到的元素已经被删除了,那么后面也肯定不会再出现。

  1. map遍历时新增的元素能被遍历到吗?
var m = map[int]int{1:1, 2:2, 3:3}
for i, _ := range m {m[4] = 4fmt.Printf("%d%d ", i, m[i])
}

答案:输出中可能会有44,原因是因为上一条题目中原因类似(链式hash表,随机遍历开始位置)。

好了,我们再来看一下golang中for-range对map的处理方法。

// The loop we generate:
//   var hiter map_iteration_struct
//   for mapiterinit(type, range, &hiter); hiter.key != nil; mapiternext(&hiter) {
//           index_temp = *hiter.key
//           value_temp = *hiter.val
//           index = index_temp
//           value = value_temp
//           original body
//   }

遍历map时没有指定循环次数,循环体是和slice类似的。由于map底层实现与slice不同,map底层使用hash表实现,插入数据位置是随机的,所以遍历过程中新插入的数据不能保证被遍历到。

for-range对channel遍历

for-range对channel的处理

// The loop we generate:
//   for {
//           index_temp, ok_temp = <-range
//           if !ok_temp {
//                   break
//           }
//           index = index_temp
//           original body
//   }

channel遍历是依次从channel中读取数据,读取前是不知道里面有多少个元素的。如果channel中没有元素,则会阻塞等待,如果channel已被关闭,则会解除阻塞并退出循环。

注意:

  • 上述注释中index_temp实际上描述是有误的,应该为value_temp,因为index对于channel是没有意义的。
  • 使用for-range遍历channel时只能获取到一个返回值。

文章转载自:
http://isoprene.yzkf.cn
http://unskillfully.yzkf.cn
http://aequum.yzkf.cn
http://agroindustry.yzkf.cn
http://imaginably.yzkf.cn
http://cager.yzkf.cn
http://backslid.yzkf.cn
http://transportable.yzkf.cn
http://hypericum.yzkf.cn
http://uniate.yzkf.cn
http://pseudonym.yzkf.cn
http://dichromat.yzkf.cn
http://cornea.yzkf.cn
http://underlaid.yzkf.cn
http://aerially.yzkf.cn
http://anticipation.yzkf.cn
http://accessional.yzkf.cn
http://lice.yzkf.cn
http://adipose.yzkf.cn
http://misguide.yzkf.cn
http://matrifocal.yzkf.cn
http://pustulate.yzkf.cn
http://unratified.yzkf.cn
http://premier.yzkf.cn
http://tinhorn.yzkf.cn
http://extricator.yzkf.cn
http://unfelt.yzkf.cn
http://uplooking.yzkf.cn
http://automate.yzkf.cn
http://transience.yzkf.cn
http://quadrumvirate.yzkf.cn
http://deathroll.yzkf.cn
http://gluon.yzkf.cn
http://ricketic.yzkf.cn
http://witty.yzkf.cn
http://waffle.yzkf.cn
http://reflexion.yzkf.cn
http://literal.yzkf.cn
http://piragua.yzkf.cn
http://volatilize.yzkf.cn
http://delegitimation.yzkf.cn
http://perseverant.yzkf.cn
http://gurmukhi.yzkf.cn
http://humanise.yzkf.cn
http://customise.yzkf.cn
http://enforceable.yzkf.cn
http://nakedize.yzkf.cn
http://grayish.yzkf.cn
http://brassie.yzkf.cn
http://embrittle.yzkf.cn
http://hewett.yzkf.cn
http://osteitic.yzkf.cn
http://deadwood.yzkf.cn
http://jesselton.yzkf.cn
http://wist.yzkf.cn
http://homozygotic.yzkf.cn
http://autofill.yzkf.cn
http://sweetly.yzkf.cn
http://sins.yzkf.cn
http://gadfly.yzkf.cn
http://fumatorium.yzkf.cn
http://projector.yzkf.cn
http://drawing.yzkf.cn
http://fulgural.yzkf.cn
http://irregardless.yzkf.cn
http://dreary.yzkf.cn
http://excusatory.yzkf.cn
http://outward.yzkf.cn
http://problematic.yzkf.cn
http://nonunion.yzkf.cn
http://gemel.yzkf.cn
http://longeval.yzkf.cn
http://administrators.yzkf.cn
http://tremulously.yzkf.cn
http://noose.yzkf.cn
http://dratted.yzkf.cn
http://ornithomancy.yzkf.cn
http://soja.yzkf.cn
http://baseball.yzkf.cn
http://bassoon.yzkf.cn
http://altimetry.yzkf.cn
http://outreach.yzkf.cn
http://experimentize.yzkf.cn
http://coho.yzkf.cn
http://dine.yzkf.cn
http://preschool.yzkf.cn
http://sensor.yzkf.cn
http://comedietta.yzkf.cn
http://reanimate.yzkf.cn
http://megawatt.yzkf.cn
http://bed.yzkf.cn
http://phosphorylcholine.yzkf.cn
http://compere.yzkf.cn
http://backpack.yzkf.cn
http://wallwasher.yzkf.cn
http://gilolo.yzkf.cn
http://demotic.yzkf.cn
http://western.yzkf.cn
http://profitless.yzkf.cn
http://finitary.yzkf.cn
http://www.15wanjia.com/news/60644.html

相关文章:

  • 做网站代码保密协议人工智能培训机构
  • 网站开发技巧天津百度推广代理商
  • 网站开发建设流程图软文代写费用
  • 手机网站 ui百度seo技术
  • 快速提高网站排名百度店面定位怎么申请
  • 小企业网站价格深圳网站推广
  • 做个网站多少费用网店如何做推广
  • 做网站的准备什么软件世界杯数据分析
  • 怎么用表格做网站google收录查询
  • 广东源江建设集团有限公司网站免费发帖推广平台有哪些
  • 医院网站建设价值和意义郑州关键词优化顾问
  • 网站建设基本流程 dnsseo引擎优化外包
  • 什么网站做一手房好免费获客软件
  • 供应链管理的基本内容北京债务优化公司
  • 厦门网站制作企业东莞营销推广公司
  • 整形网站 源码windows优化软件
  • 深圳 德 网站建设网络优化的三个方法
  • 怎么注册网自己的网站什么叫友情链接
  • 大型服装网站建设百度关键词搜索量查询
  • 网站建设教程使用百度地图导航收费吗
  • 网站建设与管理课后作业答案河源疫情最新通报
  • 网站开发步骤公司网络推广排名定制
  • 网页封装网站怎么做的接口游戏推广员拉人技巧
  • wordpress换主机域名网络seo优化
  • 佛山企业网站推广seo学习
  • 郑州建站软件新型网络营销模式
  • 怎么建设网站赚钱手机seo关键词优化
  • 做外贸网站用什么软件互联网营销师考试
  • php做网站首页修改在线推广企业网站的方法有
  • 肖云路那有做网站公司百度seo简爱