习惯了java写法,猛地去看go语言,或多或少还是有点别扭的。哈哈,不过没关系,对比着学习还是挺好的。
在java中一提到循环遍历,脑子里立马都是for循环,其实golang中循环也是用for,不过结合了一个关键字一同使用,这个关键字就叫做range。
range可以遍历数组集合:
如下我定义了长度为7的数组,进行遍历。
定义了index和value这两个变量:
index表示索引(相当于java for循环中的i)
value表示遍历出的元素(相当于java中的arr[i])
import "fmt"
func main() {
a :=[7]int{1,2,3,4,5,6,7}
for index,value :=range a{
fmt.Println(index,value)
}
}
运行效果:
当然你不想要索引,只想要元素时可以使用废弃占位符。
import "fmt"
func main() {
a :=[7]int{1,2,3,4,5,6,7}
for _,value :=range a{
fmt.Println(value)
}
}
切片遍历
它和数组的区别就在于中括号中是空的,并且它属于一种引用。
import "fmt"
func main() {
a :=[]int{1,2,3,4,5,6,7}
for index,value :=range a{
fmt.Println(index,value)
}
}
map遍历:
我们在java中遍历都是根据key获取value,go中map可以这样遍历。
从运行效果中可以看出来,key value都获取到了。
import "fmt"
func main() {
a := map[string]string{"key":"嗨","value":"山石"}
for t,b := range a{
fmt.Println(t,b)
}
}
除此之外还有一个更有趣的东西:
运行如下代码作比较:
import "fmt"
func main() {
a :=[7]int{1,2,3,4,5,6,7}
for b,c :=range a{
if b==0 {
a[1],a[2]=22,33
}
a[b]=c+10
}
fmt.Println(a)
}
import "fmt"
func main() {
a :=[]int{1,2,3,4,5,6,7}
for b,c :=range a{
if b==0 {
a[1],a[2]=22,33
}
a[b]=c+10
}
fmt.Println(a)
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/115815.html