Go语言学习之路 (四)循环语句与条件语句

前言

编程中,除去一些特定场景,我们使用得最多的应该就是条件语句和循环语句,它们可以帮助我们处理很多东西,今天就一起来学习一下go语言中的条件语句和循环语句吧

条件语句

在这里插入图片描述
条件语句很简单,如下面代码所示

// 普通的条件语句
i := 10
if i == 10 {
	fmt.Printf("这是测试")
}else {
	fmt.Printf("这是else")
}

switch语句
首先记住一点,go语言的switch语句自带break

i := 1
// 判断i
switch i {
	case 10 : fmt.Printf("这是10")
	// 这里是多匹配,1,2,3都可以
	case 1,2,3 : fmt.Printf("这是1")
	case 20 : fmt.Printf("这是20")
} 
// 也可以写成这样
switch {
	case i == 10 : fmt.Printf("这是10")
	case i == 1 : fmt.Printf("这是1")
	case i == 20 : fmt.Printf("这是20")
}
// case type
q := reflect.TypeOf(i)
switch q {
	case int : fmt.Printf("这是10")
	case string : fmt.Printf("这是1")
	case bool : fmt.Printf("这是20")
}
// fallthrough关键字,会强制执行后面一个case
switch {
	case i == 10 : fmt.Printf("这是10")
	case i == 1 : fmt.Printf("这是1") 
				fallthrough
	case i == 20 : fmt.Printf("这是20")
}

select语句
这个语句只能用于通道channel操作,读取或者写入

// 创建一个通道
test := make(chan bool)
	go func() {
		for {
			select {
			case <- test:
				fmt.Println("test")
				return
			default:
				fmt.Println("default")
			}
		}
	}()
	// 主线程在3秒后,向quit信道写入数据	
	time.Sleep(3 * time.Second)
	test <- "test"          
	fmt.Println("end")

注意,这里是goroutine(相当于多线程),在case语句中一定要使用return,而不能使用break,break之后还在当前循环,而return是直接退出goroutine线程。
还有,一般select语句中不要使用default,因为select没有case到,会一直执行default语句,直到有一个case

循环语句

循环语句可以简单的理解为,满足条件,就继续执行循环体,不满足则退出,如下图所示
在这里插入图片描述

1、普通for循环

和java等语言一样,这是简单的for循环

// for 初始值;循环条件;变量赋值{循环体}
for i :=0;i<=10;i++{
	fmt.Printf(strconv.Itoa(i))
}
// for 条件 {}
i := 0
for i<=10{
	i++
}

go语言还有一种range的循环

// 数组循环
strings := []string{"test1", "test2"}
   for i, s := range strings {
      fmt.Println(i, s)
   }
// map循环
map1 := make(map[int]float32)
    map1[1] = 1.0
    map1[2] = 2.0
    map1[3] = 3.0
    map1[4] = 4.0
   
    //  读取 key 和 value
    for key, value := range map1 {
      fmt.Printf("key is: %d - value is: %f\n", key, value)
    }

    // 只读取 key,实际上相当于 key,_
    for key := range map1 {
      fmt.Printf("key is: %d\n", key)
    }

    // 只读取 value
    for _, value := range map1 {
      fmt.Printf("value is: %f\n", value)
    }

2、死循环

// 也可以写成 var sum = 0 或者 var sum int = 0
sum := 0
for {
	sum++
	fmt.Printf(strconv.Itoa(sum))
}

3、关键字

break: 直接跳出当前循环(中断循环)
continue: 跳出本地循环,进行下一次循环
goto: 跳入指定位置

//这里就只讲解一下goto
   // 变量
   var i int = 10
   // 循环
   LOOP: for i < 20 {
      if i == 15 {
         //当i等于15时直接跳到LOOP
         i++
         goto LOOP
      }
      fmt.Printf("a的值为 : %d\n", i)
      i++    
   }  
  • 7
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值