流程控制
1 条件语句
GO编程语言中if的语法如下:
if 布尔表达式 { /*在布尔表达式为true时执行*/ }
if 在布尔表达式为 true 时,其后紧跟的语句块执行,如果为 false 则不执行。
实例如下,用if比较两个数的大小:
package main import "fmt" func main() { var a, b int fmt.Scanf("%d %d", &a, &b) if a > b { fmt.Printf("%d>%d\n", a, b) } else if a == b { fmt.Printf("%d=%d\n", a, b) } else { fmt.Printf("%d<%d\n", a, b) } }
关于条件语句,需要注意以下几点:
布尔表达式不需要使用括号将条件包含起来;
不论语句体内有几条语句,花括号{ }都是必须存在的;
左花括号 { 必须与if或者else处于同一行;
在if之后,布尔表达式之前,可以添加变量初始化语句,使用 ; 间隔;
在具有返回值的函数中,不允许return语句出现在if……else……结构中;
2 选择语句
根据传入条件的不同,选择语句会执行不同的语句。
实例如下,判断变量中储存的数据类型:
package main import "fmt" func valueType(value interface{}) { switch i := value.(type) { case nil: fmt.Println("变量的类型是", i) case int: fmt.Println("变量的类型是int型") case float64: fmt.Println("变量的类型是float64型") case func(int) float64: fmt.Println("变量的类型是func(int)型") case bool: fmt.Println("变量的类型是bool型") case string: fmt.Println("变量的类型是string型") default: fmt.Println("未知") } } func main() { a := 32 b := 32.2 c := "32" d := false var e interface{} valueType(a) valueType(b) valueType(c) valueType(d) valueType(e) } /* 打印结果如下: 变量的类型是int型 变量的类型是float64型 变量的类型是string型 变量的类型是bool型 变量的类型是 <nil> */
关于条件语句,需要注意以下几点:
左花括号 { 必须与switch处于同一行;
条件表达式不限制为常量或者整数;
单个case中,可以出现多个结果选项;
不需要break来明确退出一个case;
只有在case中明确添加fallthrough关键字,才会继续执行下一个case;
不设定switch之后的条件表达式,这个switch结构与多个if……else……的逻辑作用等同。
3 循环语句
在GO语言编程中,循环语句只支持for关键字,不支持while和do-while结构。关键字for的基本使用方法与C/C++中非常接近,代码如下:
sum := 0 for i := 0; i < 10; i++ { fmt.Print(sum+i, " ") }
在循环体中,如果条件语句永远不为false则会进行无限循环(俗称死循环)。
实例如下,数字累加至100后退出循环:
package main import ( "fmt" ) func main() { sum := 0 for true { sum++ if sum == 100 { break } } }
关于循环语句,需要注意以下几点:
左花括号 { 必须与for处于同一行
Go语言不支持以逗号为间隔的多个赋值语句,必须使用平行赋值的方法来初始化多个变量;
Go语言的for循环支持continue和break来控制循环,额外提供了更高级的break,可以选择中断哪一个循环。
实例如下,在一组二维整形数组中查找某个数:
package main import ( "fmt" ) func main() { sum := [4][7]int{ {58, 15, 26, 35, 48, 95, 41}, {55, 32, 15, 25, 12, 9, 253}, {96, 21, 6, 25, 84, 25, 100}, {8, 106, 56, 85, 37, 66, 59}} JLoop: for i := 0; i < 4; i++ { for j := 0; j < 7; j++ { fmt.Print(sum[i][j], " ") if sum[i][j] == 12 { break JLoop } } } } /* 打印结果如下: 58 15 26 35 48 95 41 55 32 15 25 12 */
4 跳转语句
在C语言中有goto跳转语句,一般在编写小游戏时经常使用,有来处理一些条件判断。在Go语言中也有goto关键字,虽然不主张使用goto,但在一些场合下被证明是最合适的。
goto语句的语义非常简单,就是跳转到本函数内的某个标签,在这里就不进行举例了。
参考: