Go语言使用for range遍历数组,切片,字符串,map及channel
- 数组,切片,字符串返回索引和值
- map返回键和值
- 通道只返回channel内的值
数组,切片,字符串遍历——获取索引和值
数组:
package main
import "fmt"
func main(){
for key,value := range [] int{1,2,3,4}{
fmt.Printf("key:%d value:%d\n",key,value)
}
}
切片:
func main(){
//声明切片,添加元素,遍历切片
case_slice := make([] int ,2,10)
case_slice = append(case_slice,1,3,4,34,5,6,7,7,6,5,4,32,2,2,11,11,33,4,5)
for key1,value1 := range case_slice{
fmt.Printf("key:%d value:%d\n",key1,value1)
}
//声明切片,切片复制,遍历切片
var car [ ] string
carComponent := [] string {"hello","go","!"} //声明切片
car = append(car,carComponent...)
for key2,value2 := range car{
fmt.Printf("key2:%d value2:%d\n",key2,value2)
}
}
字符串:
func main(){
var str = "hello 你好 go"
for key,value := range str{
fmt.Printf("key:%d value:%d\n",key,value)
}
}
遍历map——获取map的键和值
func main(){
//声明map
scene := make(map[string] int )
scene["route"] = 1
scene["black"] = 2
scene["red"] = 3
//循环遍历map
for key,value := range scene{
fmt.Println(key,value)
}
}
map还有一种在声明时填充内容的方式
//左边是键值,右边是值
scene1 := map[string]string{
"W":"forward",
"A":"left",
"S":"right",
"D":"backward",
}
for key1,value1 := range scene1{
fmt.Println(key1,value1)
}
遍历通道channel——接收通道数据
for range可以遍历通道(channel),在遍历通道时只输出一个值,即管道内的类型对应的数据
例子: func main() {
//创建一个整型的通道
chan1 := make(chan int)
//启动goroutine,往通道中传送数据,结束后马上关闭通道
go func() {
chan1 <- 1
chan1 <- 2
chan1 <- 3
close(chan1)
}()
//对通道进行遍历,不断从通道中取数,直到通道关闭
for value := range chan1 {
fmt.Println(value)
}
}
在遍历中选择希望获得的变量
例:
m := map[string] int{
"hello":111
"world":222
}
for _,value := range m{
fmt.Println(value)
}
将key值变为_,成为匿名变量。同上,也可将value值变为_
for key,_ := range [ ] int{1,2,3,4}{
fmt.Println("key:%d",key)
}