流程控制

if / else 分支判断

// part1
if condition {
    
}

// part2
if condition {
    
} else {
    
}

// part3
if condition1 {
    
} else if condition2 {
    
} else if condition3 {
    
} else {
    
}

switch case语句

go里面的switch不需要break,即使不加break执行当前语句后也不会往下执行

switch var {
    case var1:
	case var2:
    case var3:
    default:
}

// eg:
var a int = 10
switch a {
    case 0:
    	fmt.Println("a is equals 0")
	case 1:
    	fmt.Println("a is equals 1")
    default:
    	fmt.Println("a isn't equals 0 and 1")
}

fallthrough

如果在执行某个case里面的语句后,想继续执行下一个case的语句,可以使用fallthrough

switch a {
    case 0:
    	fmt.Println("aaaa")
    	fallthrough
	case 1:
    	fmt.Println("bbb")
    default:
    	fmt.Println("ccc")
}

多条件判断

switch a {
    case 0, 1, 2, 3, 4, 5:
    	fmt.Println("aa")
    default:
    	fmt.Println("bb")
}

一段范围内进行判断

var i = 0
switch {
    case i > 0 && i < 10:
    	fmt.Println("i > 0 and i < 10")
    case i > 10 && i < 20:
    	fmt.Println("i > 10 and i < 20")
    default:
    	fmt.Println("def")
}

判断条件初始化

switch i := 0; {
    case i > 0 && i < 10:
    	fmt.Println("i > 0 and i < 10")
    case i > 10 && i < 20:
	    fmt.Println("i > 10 and i < 20")
	default:
    	fmt.Println("def")
}

for循环

// 写法
for 初始化语句; 条件判断; 变量修改 {
    
}

写法一

for i := 0; i < 100; i++ {
    fmt.Println("i=%d\n", i)
}

写法二

for 条件 {
    
}

// eg
for i > 0 {
    fmt.Println("i > 0")
}

for true {
    fmt.Println("i > 0")
}

for {
    fmt.Println("i > 0")
}

写法三for range语句

str := "hello world"
// i位数字下标
// v是对应的值
for i, v := range str {
    fmt.Println(i, v)
}

goto 跟 label 语句

用户可以定义label,然后可以使用goto或者continue等语句跟上这个label去跳转到相应的位置

// continue & label
LABEL1:
    for i := 0l i < 10; i++ {
        for j := 0; j < 10; j++ {
            if j == 4 {
                continue LABEL1
            }
        }
    }

// goto & label
i := 0
HERE:
	i++
	if i == 5 {
    	return
	}
	goto HERE

 

posted @ 2019-05-23 21:59  Jin同学  阅读(110)  评论(0)    收藏  举报