for
sum := 0
for i := 0; i < 10; i++ {
sum += i
}
fmt.Println(sum)
sum := 0
for ; sum < 10; {
sum += 1
}
fmt.Println(sum)
- for 是 Go 中的 “while”(去掉分号)
sum := 0
for sum < 10 {
sum += 1
}
fmt.Println(sum)
for {
fmt.Println("1")
}
if
x := 10
for x > 0 {
if x % 2 == 0 {
fmt.Println(x)
}else{
fmt.Println(x)
}
x -= 1
}
// 可以在条件表达式前声明变量,变量作用域为if之内
if x:=2; x>0 {
fmt.Println(x)
x -= 1
}
switch
- Go 只运行选定的 case,而非之后所有的 case
- Go 的另一点重要的不同在于 switch 的 case 无需为常量,且取值不必为整数。
name := "jack"
switch name {
case "tony":
fmt.Println("tony")
case "mike":
fmt.Println("mike")
default:
fmt.Println(name)
}
** 如果上述没有default,匹配不到case时,不会执行所有case;如果加上default,如果匹配不到case时,执行default
- 没有条件的 switch 同 switch true 一样。
defer
- defer 语句会将函数推迟到外层函数返回之后执行。
func main() {
defer fmt.Println("world")
fmt.Println("hello")
}
执行结果是:
hello
world
- 推迟的函数调用会被压入一个栈中。当外层函数返回时,被推迟的函数会按照后进先出的顺序调用。
for i := 0; i < 3; i++ {
defer fmt.Println(i)
}
fmt.Println("done")
执行结果:
done
2
1