for
Go 只有一种循环结构:for 循环。 基本的 for 循环由三部分组成,它们用分号隔开: 初始化语句:在第一次迭代前执行,可选 条件表达式:在每次迭代前求值 后置语句:在每次迭代的结尾执行,可选
package main func main() { /*sum:=0 for i:=0;i<10;i++{ sum += i }*/ sum := 1 for ; sum < 10; { sum += sum } //此时你可以去掉分号,因为 C 的 while 在 Go 中叫做 for。 for sum<12{ sum += sum } }
if
Go 的 if 语句与 for 循环类似,表达式外无需小括号 ( ) ,而大括号 { } 则是必须的。
package main import "fmt" func main() { if i := 1; i < 10{ i+=1 fmt.Println(i) } }
switch
switch switch 是编写一连串 if - else 语句的简便方法。它运行第一个值等于条件表达式的 case 语句。
Go 的 switch 语句类似于 C、C++、Java、JavaScript 和 PHP 中的,不过 Go 只运行选定的 case,而非之后所有的 case。 实际上,Go 自动提供了在这些语言中每个 case 后面所需的 break 语句。 除非以 fallthrough 语句结束,否则分支会自动终止。 Go 的另一点重要的不同在于 switch 的 case 无需为常量,且取值不必为整数。
package main import ( "fmt" "runtime" ) func main() { fmt.Println("OS start!") switch os := runtime.GOOS;os { case "Linux": fmt.Println("Linux") case "UNIX": fmt.Println("UNIX") default: fmt.Println("%s",os) } fmt.Println("When's Saturday?") today := time.Now().Weekday() switch time.Saturday { case today + 0: fmt.Println("Today.") case today + 1: fmt.Println("Tomorrow.") case today + 2: fmt.Println("In two days.") default: fmt.Println("Too far away.") } t := time.Now() switch { case t.Hour() < 12: fmt.Println("Good morning!") case t.Hour() < 17: fmt.Println("Good afternoon.") default: fmt.Println("Good evening.") } }