Go语言中的流程控制

if…else…

在 Go 语言中,if 关键字的作用和其它大部分语言相同,用于测试某个布尔表达式或布尔是否为真;若为真则执行 if 之后 {} 中的语句,否则跳过这些语句;如果存在第二分支,则需要使用 else 关键字,还需要增加分支的话就需要使用 else if。

需要注意的是 Go 语言中的 if 后面不需要加括号。

if v > 100 {
	return 100
} else if v < 0 {
	return 0
} else {
	return v
}

在 Go 语言中,if 还有一种特别的写法,可以在条件表达式之前写一个赋值表达式,类似于 for 循环语句。

func readFile(filename string) {
	if contents, err := os.ReadFile(filename); err != nil {
		fmt.Println(err)
	} else {
		fmt.Printf("%s\n", contents)
	}
}

swich …case…

Go 语言对 switch…case… 的功能进行了扩展,它变得更加的通用。switch 之后可以什么都不带。case 也无需是一个固定值,也可以是一个布尔表达式,而且每一个 case 都是一个 独立的代码块,执行完了之后立刻跳出 switch,不需要使用 break。

使用 fallthrough 关键字可以在已经执行完成的 case 之后,把控制权转移到下一个 case 的执行代码中,需要注意的是,fallthrough 不会检查下一个 case 的条件是否成立。

func main() {
    num := 2

    switch num {
    case 1:
        fmt.Println("数字是1")
    case 2:
        fmt.Println("数字是2")
    default:
        fmt.Println("数字不是1也不是2")
    }
}

for…

在 Go 语言中,for 之后一样可以跟三个语句,单次表达式;条件表达式;末尾循环体,但是它不需要使用 () 来包裹这三个表达式,写法上更加的简洁。同时它也和其它语言一样,可以任意省略这三个表达式。

// 基本结构
func main() {
	sum := 0
	for i := 1; i <= 100; i++ {
		sum += i
	}
	fmt.Println(sum)
}

// 省略单次表达式
func convertToBin(n int) string {
	result := ""
	for ; n > 0; n /= 2 {
		lsb := n % 2
		result = strconv.Itoa(lsb) + result
	}
	return result
}

// 省略末尾循环体
func printFile(filename string) {
	file, err := os.Open(filename)
	if err != nil {
		panic(err)
	}
	scanner := bufio.NewScanner(file)
	for scanner.Scan() {
		fmt.Println(scanner.Text())
	}
}

// 全部省略就是死循环
func forever() {
	for {
		fmt.Print("abc")
	}
}

在 for 循环中可以使用 break 和 continue 关键字来跳出或跳过循环;

break :提前结束 for 循环,之后程序会将在 for 循环下一行代码开始执行;

continue :跳过 for 循环中当前这次循环,执行下一次循环;

在循环体中使用 break 和 continue 时,要特别小心,确保程序的正确性,不恰当的使用可能会导致逻辑混乱及死循环等问题。

func main() {
	a := 0
	for {
		fmt.Println(a)
    	a++
    	if a == 10 {
        	break
    	}
	}

	b := 0
	for b <= 10 {
    	fmt.Println(b)
    	b += 2
    	if b % 2 != 0 {
        	continue
    	}
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值