键值循环

本文详细介绍如何使用Go语言的for range语句遍历数组、切片、字符串、map及channel,包括获取索引和值的方法,适用于不同数据类型的遍历需求。

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)

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值