【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条件语句

与其他主要编程语言的差异

  1. condition 表达式结果必须为布尔值
  2. 支持变量赋值
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")
		}
	}
}