流程控制

if条件语句

module main

fn main() {
	a := 10
	b := 20
	if a < b {
		println('$a < $b')
	} else if a > b {
		println('$a > $b')
	} else {
		println('$a == $b')
	}
}

条件赋值(if表达式)

num := 777
// 简单的条件赋值
s := if num % 2 == 0 { 'even' } else { 'odd' }
println(s)
// "odd"
// 多条件赋值
a, b, c := if true { 1, 'awesome', 13 } else { 0, 'bad', 0 }
println(a)
println(b)
println(c)

likely/unlikely

_likely_和_unlikely_这两个内置函数实现的是跟C的likely一样的效果,可以实现给条件分支的性能做优化,一般的代码来说,使用的场景不多

match分支语句

match要求穷尽所有可能,所以基本都要带上else语句,else语句只能有一个。

匹配的值也可以多个,用逗号分隔:

match赋值(match表达式)

match的同时,加上mut ,可以修改匹配变量,通常是配合for in 语句结合使用

使用match判断联合类型的具体类型

for 循环语句

for的四种形式:

  1. 传统的:for i=0;i<100;i++ {}

为了简洁的目的,for里面的i默认就是mut可变的,不需要特别声明为mut,如果声明了编译器会报错

  1. 替代while:for i<100 {}

  1. 无限循环:for {}

  1. 遍历:for i in xxx {}

    for in可以用来遍历字符串,数组,区间,字典这四种类型

遍历字符串:

遍历数组:

遍历区间:

遍历字典:

跟其他语言一样continue用来重新继续当前循环,break用来跳出当前循环

如果存在多层嵌套的循环,也可以使用continue label和break label来控制重新/跳出标签那一层的循环

for is语句

用于联合类型的类型循环判断(感觉没啥用,就是一个语法糖而已)

for循环结合or代码块

for select语句

for select语句主要在并发中使用,用来循环监听多个chanel,更多内容可以参考并发章节

goto语句

goto语句只能在函数内部跳转

最后更新于

这有帮助吗?