【Duke】条件和循环 006 - PingPongGooo/GoFoundation GitHub Wiki
循环
与其他主要编程语言的差异
Go语言仅支持循环关键字 for
for j : = 7; j<=9; j++
while条件循环
while(n<5)
n:=0
for n < 5{
n++
fmt.Println(n)
}
无限循环
while(true)
n := 0
for {
...
}
package loop
import "testing"
func TestWhileLoop(t *testing.T) {
n := 0
// while (n<5)
for n < 5 {
t.Log(n)
n++
}
}
if条件语句
与其他主要编程语言的差异
- condition 表达式结果必须为布尔值
- 支持变量赋值
if var declaration; condition {
// code to be executed if condition is true
}
package condition
import "testing"
func TestIfMultiSec(t *testing.T) {
if a:= 1==1; a{
t.Log("1==1")
}
}
// 由于go语言方法支持多返回值。
//通常我们可以利用起来
func TestIfMultiSec2(t *testing.T) {
if v,err:= someFun(); err == nil{
t.Log("1==1")
}else {
t.Log("1!=1")
}
}
//switch 条件
switch os:= runtime.GOOS; os{
case "darwin":
fmt.Println("OS X")
case "linux":
fmt.Println("OS X")
default:
fmt.Printf("%s.",os)
}
switch {
case 0<=Num && Num <=3:
fmt.Println("0-3")
case 4<=Num && Num <=6:
fmt.Println("4-6")
case 7<=Num && Num <=9:
fmt.Println("7-9")
}
switch 条件
与其他主要编程语言的差异
1. 条件表达式不限制为常量或者整数;
2. 单个case中,可以出现多个结果选项,使用逗号分隔;
3. 与c语言等规则相反,go语言不需要用break来明确退出一个case;
4. 可以不设定switch之后的条件表达式,在此种情况下,这个switch结构
与多个if...else...的逻辑作用相同
func TestSwitchMultiCase(t *testing.T) {
for i:=0; i< 5; i++{
switch i {
case 0,2:
t.Log("even")
case 1,3:
t.Log("odd")
default:
t.Log("it is not 0-3")
}
}
}
switch 类似 多个if else 使用
func TestSwitchCaseCondition(t *testing.T) {
for i:=0; i< 5; i++{
switch {
case i%2==0:
t.Log("even")
case i%2 == 1:
t.Log("odd")
default:
t.Log("it is not 0-3")
}
}
}