Golang学习笔记-条件语句,循环语句

Go的条件语句,循环语句和C很像,不同的是Go的条件表达式可以不用括号扩起来,除此之外还有这些不同:

switch语句

switch分支中的代码执行完后会跳出switch代码块,如果我们需要执行后面的 case,可以使用fallthrough。

func main() {
    a:=1
    switch a {
    case 0:
        fmt.Println("a is 0")
    case 1:
        fmt.Println("a is 1")
        fallthrough
    case 2:
        fmt.Println("a is 2")
    }
}

结果:

a is 1
a is 2

switch支持任何类型的判断,例如下面的string:

func main() {
    var fruitName="apple"
    switch fruitName {
    case "apple":
        fmt.Println("苹果")
    case "banana","orange":
        fmt.Println("香蕉或橙子")
    }
}

switch的另一种形式是不提供任何被判断的值,然后在每个 case 分支中进行测试不同的条件,当任一分支的测试结果为 true 时,该分支的代码会被执行,这比链式的 if-else 语句可读性更好。

func main() {
    value:=65
    switch {
    case value>80:
        fmt.Println("优秀")
    case value>60:
        fmt.Println("及格")
    default:
        fmt.Println("不及格")
    }
}

使用 type-switch可以判断某个interface变量中实际存储的变量类型。

func main() {
    var value interface{}

    switch value.(type) {
    case nil:
        fmt.Printf("t is nil")
    case int:
        fmt.Printf("t is int")
    case float64:
        fmt.Printf("t is float64")
    case func(int) float64:
        fmt.Printf("t is func(int)")
    case bool, string:
        fmt.Printf("t is bool or string" )
    default:
        fmt.Printf("t is unknow type")
    }
}

for循环语句

Go没有while语句,所有循环都用关键字for:

普通for循环和C一样:

func main() {
    for i:=0;i<10;i++{
        fmt.Println(i)
    }
}

和C的while循环一样:

func main() {
    n:=0
    for n<10{
        fmt.Println(n)
        n++
    }
}

和C的for(;; ) 一样:

func main() {
    n:=0
    for {
        if n>9{
            break
        }
        fmt.Println(n)
        n++
    }
}

for range 循环可以对 slice、map、数组、字符串等进行迭代循环:

func main() {
    str:="hello"
    for i,c:=range str{
        fmt.Println(i,c)
    }
    fruitMap := map[string]int{"apple": 1, "banana": 2, "orange": 3}
    for key,value:=range fruitMap{
        fmt.Println(key,value)
    }
}

结果:

0 104
1 101
2 108
3 108
4 111
apple 1
banana 2
orange 3
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页