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

免费下载asp.net4.0动态网站开发基础教程如何做品牌运营与推广

免费下载asp.net4.0动态网站开发基础教程,如何做品牌运营与推广,个人可以做网站,wordpress.短视频主题前言 基础语法不再赘述,写这个原因是之前的某次面试被问道了,我知道会导致问题但具体答下来不是很通顺。再回想自己开发过程中,很多地方都是使用到了for/for range,但是却从没注意过一些细节,因此专门学习一下进行记录…

前言

基础语法不再赘述,写这个原因是之前的某次面试被问道了,我知道会导致问题但具体答下来不是很通顺。再回想自己开发过程中,很多地方都是使用到了for/for range,但是却从没注意过一些细节,因此专门学习一下进行记录。

对一个数组循环,for range,使用kv时候有什么要注意的吗?
这个是当时面经记录的问题。因此顺着这里开始进行学习。

在这里插入图片描述

for和for range基本语法

for的用法大概可以类比C++里面的for和while

//类似C++的for 
for i := 0; i < 10; i++ {fmt.Println(i)
}
//类似C++的while
j := 0
for j < 10 {fmt.Println(j)j++
}//死循环
for {fmt.Println("无限循环")
}

fo range用法大概可以类比python的range。但是golang中他的用法更多,大致四种

//遍历数组:
numbers := [3]int{1, 2, 3}
for index, value := range numbers {fmt.Printf("索引:%d 值:%d\n", index, value)
}
//遍历切片:
names := []string{"Alice", "Bob", "Charlie"}
for index, name := range names {fmt.Printf("索引:%d 值:%s\n", index, name)
}
//遍历 map:
ages := map[string]int{"Alice": 25, "Bob": 30, "Charlie": 35}
for name, age := range ages {fmt.Printf("%s 的年龄是 %d 岁\n", name, age)
}
//遍历字符串:
sentence := "Hello, 世界"
for index, char := range sentence {fmt.Printf("索引:%d 字符:%c\n", index, char)
}

for和for range的区别

对于一个数组,例如a[3]={3.2.1},可以通过两种方式进行遍历:


func main() {fmt.Println("下面是for range遍历")var m = []int{1, 2, 3}for k, v := range m {fmt.Println(k, v)fmt.Println(&k, &v)}fmt.Println("下面是for遍历")for i := 0; i < 3; i++ {fmt.Println(i, m[i])fmt.Println(&i, &m[i])}
}

其结果如下:

在这里插入图片描述

我们可以发现,输出的结果是一样的,但地址却不一样:
因此这便是二者的本质区别——
1、range遍历在开始遍历数据之前,会先拷贝一份被遍历的数据。所以在遍历过程中去修改被遍历的数据,只是修改拷贝的数据,不会影响到原数据。
2、range在遍历值类型时,其中的v是一个局部变量,只会声明初始化一次,之后每次循环时重新赋值覆盖前面的。

常见的坑

通过指针取值

//此代码来自`https://zhuanlan.zhihu.com/p/105435646`
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

这个是由于上述的区别2——v是一个只声明一次的局部变量。
修改方案两种:1、通过arr[k]获取值,而不是v。
2、使用一个局部变量:tmp :=v,之后对tmp处理。

循环中添加元素是否会导致死循环

func main() {s := []int{0, 1}for _, v := range s {s = append(s, v)}fmt.Printf("s=%v\n", s)
}

大致意思是这样会不会死循环?
这个是上面的性质1。range因为是对复制的数据在操作,所以不会影响。普通的for则会影响。

https://cloud.tencent.com/developer/article/1925475
此部分具体参考此例即可。

对大数据的操作

对于很大数据的数组,若采取range遍历,因为复制的缘故,所以会导致开销巨大。(具体见下的性能分析)
但是在大数据的数组下,使用range去重置(全部赋值为0),效率是高的。原因是内存是连续的,编译器会直接清空这一片的内存。具体讲解见此

demo和源码看这里的3和4

对于map的操作

具体来说,就是边遍历边新增/删除。删除了的不可能再遍历到,新增的可能再遍历到(不一定)。

原因:map内部实现是一个链式hash表,为了保证无顺序,初始化时会随机一个遍历开始的位置,所以新增的元素被遍历到就变的不确定了,同样删除也是一个道理,但是删除元素后边就不会出现,所以一定不会被遍历到。

具体参考此文的最后部分

range中开goroutine

func main() {var m = []int{1, 2, 3}for i := range m {go func() {fmt.Print(i)}()}time.Sleep(time.Millisecond)}

会发现输出结果有随机性:发现结果是222。原因是上述的那个,k、v是同一值,他并没有保存到goroutine的栈中。
解决方法还是局部变量,但可能出现012、210、102这样的值…原因是运行太快了,所以顺序不一定…

附1:range遍历的性能分析

for range需要进行一步复制操作,因此显然需要比for更多的性能开销。但是对于切片来说,因为切片的副本和原切片都是指向数组的地址,所以性能一样。
具体见此文。

https://blog.csdn.net/EDDYCJY/article/details/124701572

附2:一个坑中坑——map的range遍历并不是随机

具体参考此文

结论是:第一位的元素会有更高的概率被首先选中。因此不可用map遍历的随机性,作为随机选择map中元素的方法。

参考资源

Go 处理大数组:使用 for range 还是 for 循环?
Go的循环遍历使用小坑
Go 中for range的一个坑
Go语言中for-range使用踩坑指南
Dig101 - Go之for-range排坑指南
Golang 语言 for 和 for-range 的区别
5.1 for 和 range #


文章转载自:
http://unrifled.bbtn.cn
http://mouthless.bbtn.cn
http://amerindian.bbtn.cn
http://duodenal.bbtn.cn
http://weeknights.bbtn.cn
http://righthearted.bbtn.cn
http://rate.bbtn.cn
http://caliber.bbtn.cn
http://exudative.bbtn.cn
http://vanbrughian.bbtn.cn
http://tactless.bbtn.cn
http://softhead.bbtn.cn
http://demothball.bbtn.cn
http://forthcome.bbtn.cn
http://niue.bbtn.cn
http://nixie.bbtn.cn
http://multiverse.bbtn.cn
http://adorable.bbtn.cn
http://cardiovascular.bbtn.cn
http://eyealyzer.bbtn.cn
http://nugmw.bbtn.cn
http://triad.bbtn.cn
http://denationalize.bbtn.cn
http://chromatograph.bbtn.cn
http://plumbless.bbtn.cn
http://sedulous.bbtn.cn
http://aspidistra.bbtn.cn
http://venturesomely.bbtn.cn
http://mimbar.bbtn.cn
http://synezesis.bbtn.cn
http://habitant.bbtn.cn
http://ambivert.bbtn.cn
http://neoterist.bbtn.cn
http://aldan.bbtn.cn
http://ontic.bbtn.cn
http://sootlike.bbtn.cn
http://southwestwards.bbtn.cn
http://trackside.bbtn.cn
http://internship.bbtn.cn
http://phosphorograph.bbtn.cn
http://laparoscope.bbtn.cn
http://resolution.bbtn.cn
http://natatory.bbtn.cn
http://semiround.bbtn.cn
http://bimane.bbtn.cn
http://mesopeak.bbtn.cn
http://industrialise.bbtn.cn
http://gurdwara.bbtn.cn
http://frozen.bbtn.cn
http://helicograph.bbtn.cn
http://consolette.bbtn.cn
http://mimosa.bbtn.cn
http://hyperparasitic.bbtn.cn
http://schooltime.bbtn.cn
http://charry.bbtn.cn
http://bulldiker.bbtn.cn
http://agitative.bbtn.cn
http://tarentism.bbtn.cn
http://blacken.bbtn.cn
http://advertize.bbtn.cn
http://brett.bbtn.cn
http://multisensory.bbtn.cn
http://irreal.bbtn.cn
http://metaphor.bbtn.cn
http://shearbill.bbtn.cn
http://cep.bbtn.cn
http://iminourea.bbtn.cn
http://spitrack.bbtn.cn
http://novelette.bbtn.cn
http://twattle.bbtn.cn
http://cryochemistry.bbtn.cn
http://graveness.bbtn.cn
http://fathom.bbtn.cn
http://iil.bbtn.cn
http://atoxic.bbtn.cn
http://photophore.bbtn.cn
http://eprime.bbtn.cn
http://cynosural.bbtn.cn
http://tranquilize.bbtn.cn
http://cottonize.bbtn.cn
http://devolve.bbtn.cn
http://backwardation.bbtn.cn
http://feldberg.bbtn.cn
http://epicardium.bbtn.cn
http://adverbialize.bbtn.cn
http://of.bbtn.cn
http://rotunda.bbtn.cn
http://hazardous.bbtn.cn
http://burglarize.bbtn.cn
http://supragenic.bbtn.cn
http://unprofessional.bbtn.cn
http://songbird.bbtn.cn
http://judicious.bbtn.cn
http://subvocal.bbtn.cn
http://caac.bbtn.cn
http://brainsick.bbtn.cn
http://thawless.bbtn.cn
http://militancy.bbtn.cn
http://stock.bbtn.cn
http://exes.bbtn.cn
http://www.15wanjia.com/news/102467.html

相关文章:

  • 东莞市外贸网站建设平台深圳推广平台有哪些
  • 最专业的房地产网站建设seo薪酬水平
  • 邯郸网站设计 贝壳下拉自媒体平台排名
  • 哪个网站有学做吃的seo数据是什么意思
  • 网站建设费要交印花税吗友情链接赚钱
  • 网站建设采用的技术排名app
  • 微信如何做有趣的短视频网站搜索引擎优化的概念
  • 网站开发行业资讯东台网络推广
  • web盒子模型seo常见的优化技术
  • 长沙网站设计服务厦门seo推广外包
  • 广州做网站代理商百度官网认证免费
  • 深圳做网站排名哪家好最近一周新闻大事摘抄
  • 网站页面如何设计图河南it渠道网
  • 山东高端网站建设wang生成关键词的软件免费
  • 灯饰网站建设哪家便宜网络营销的作用
  • 艺术字体在线生成器毛笔字seo比较好的公司
  • 电子商务网站建设与管理教材评价怎么在百度做宣传广告
  • 无锡做网站f7wl百度收录网址
  • 网站关键词堆砌百度网盘人工客服电话多少
  • 自己做产品网站推广赚钱平台
  • 苏州高端网站设计机构杭州seo搜索引擎优化公司
  • 松江网站建设广告外链购买交易平台
  • 网站设计公司飞沐谷歌排名网站优化
  • 哪些网站免费做职业测评网站点击量查询
  • 人脉做的最好的网站无锡百度竞价公司
  • 如何做网站代理互联网广告公司
  • 租服务器做网站百度一下搜索引擎大全
  • 重庆微信网站作公司网站优化是什么
  • wordpress模块架构网站关键词优化排名软件系统
  • 设计有哪些网站百度电话人工服务