go的条件判断和循环
while 循环
func TestIf(t *testing.T){
n := 0
for n < 5 {
n++;
fmt.Print(n)
}
}
无限循环
for{
....
|}
for循环
for i := 0; i < 10; i++ {
fmt.Print(i)
}
if条件判断
第一种 if…else…
i:=1
if condition {
....
}else if condition {
.....
}else{
.....
}
第二种 支持变量赋值
if var declaration; condition {
code to be executed if condition is true
}
if i := 10; i == 10 {
i++
}
if v,err := someFun();err == "" {
fmt.Print(v)
}else{
fmt.Print(v)
}
//功能
func someFun()(int , string){
return 1 , ""
}
注意点:
- condition表达式结果必须为布尔值
- 支持变量赋值
switch条件
- 条件表达式不限制为常量或者整数
- 单个case中,可以出现多个结果选项,使用逗号分隔
- 与c语言等规则相反,go语言不需要用break来明显退出单个case
- 可以不设定switch之后的条件表达式,在这种情况下,整个switch结构与多个if…else…的逻辑作用等同
示例-1 普通switch
func TestSwitch(t *testing.T) {
switch os := runtime.GOOS;os {
case "darwin":
t.Log("darwin")
case "freebsd":
t.Log("freebsd")
case "linux":
t.Log("linux")
default:
t.Log("window")
}
}
示例-2 不设定switch之后的条件表达式
func TestSwitch2(t *testing.T) {
num := 10
switch {
case num > 0 && num <= 10:
t.Log("小孩子")
case num > 10 && num <= 20:
t.Log("青少年")
default:
t.Log("成人了")
}
}