条件
-
Go 与 C 的的控制语句的区别:
- Go 坚持“一件事情仅有一种做法的理念”,只保留了 for 这一种循环结构,去掉了 C 语言中的 while 和 do-while 循环结构;
- Go 填平了 C 语言中 switch 分支结构中每个 case 语句都要以 break 收尾的“坑”;
- Go 支持了 type switch 特性,让“类型”信息也可以作为分支选择的条件;
- Go 的 switch 控制结构的 case 语句还支持表达式列表,让相同处理逻辑的多个分支可以合并为一个分支,等等。
-
在 if 语句中声明自用变量是 Go 语言的一个惯用法,它的作用域仅限于 if 语句的各层隐式代码块中,if 语句外部无法访问和更改这些变量。
循环
-
Go 语言的 for 循环支持声明多循环变量,并且可以应用在循环体以及判断条件中,
-
循环**与其他主要编程语言的差异:**Go 语言仅支持循环关键字
for j := 7; j <= 9; j++ {…}func TestLoop(t *testing.T) { var n int = 5 for n <= 10 { t.Log(n) n++ } } -
if 条件与其他主要编程语⾔的差异:
-
condition 表达式结果必须为布尔值
-
⽀持变量赋值
if var declaration; condition { // code to be executed if condition is true }
-
switch
-
无论 default 分支出现在什么位置,它都只会在所有 case 都没有匹配上的情况下才会被执行的
-
switch条件与其他主要编程语言的差异:
-
条件表达式不限制为常量或者整数;
-
单个 case 中,可以出现多个结果选项, 使⽤逗号分隔;
-
与 C 语⾔等规则相反,Go 语⾔不需要⽤break来明确退出⼀个 case;
-
可以不设定 switch 之后的条件表达式,在此种情况下,整个 switch 结构与多个 if...else... 的逻辑作用等同。
func Test_switch(t *testing.T) { for i := 0; i < 5; i++ { switch i { case 0, 2: t.Log(i, "even") case 1, 3: t.Log(i, "odd") default: t.Log(i, ">3") } } }func Test_switch2(t *testing.T) { for i := 0; i < 5; i++ { switch { case i%2 == 0: t.Log(i, "even") case i%2 == 1: t.Log(i, "odd") default: t.Log("unKnow") } } }
-