点击上方蓝色“ Go语言中文网 ”关注, 每天一起学 Go

这是 Golang 系列教程 中的第 10 篇。

if else

看代码比文字更容易理解。让我们从一个简单的例子开始,它将把一个手指的编号作为输入,然后输出该手指对应的名字。比如 0 是拇指,1 是食指等等。

package main

import (
    "fmt"
)

func main() {
    finger := 4
    switch finger {
    case 1:
        fmt.Println("Thumb")
    case 2:
        fmt.Println("Index")
    case 3:
        fmt.Println("Middle")
    case 4:
        fmt.Println("Ring")
    case 5:
        fmt.Println("Pinky")

    }
}

在线运行程序[1]

switch fingerfingercasefingerRing
casemain.go:18:2:在tmp / sandbox887814166 / main.go:16:7
package main

import (
    "fmt"
)

func main() {
    finger := 4
    switch finger {
    case 1:
        fmt.Println("Thumb")
    case 2:
        fmt.Println("Index")
    case 3:
        fmt.Println("Middle")
    case 4:
        fmt.Println("Ring")
    case 4://重复项
        fmt.Println("Another Ring")
    case 5:
        fmt.Println("Pinky")

    }
}

在线运行程序[2]

默认情况(Default Case)

我们每个人一只手只有 5 个手指。如果我们输入了不正确的手指编号会发生什么?这个时候就应该是属于默认情况。当其他情况都不匹配时,将运行默认情况。

package main

import (
    "fmt"
)

func main() {
    switch finger := 8; finger {
    case 1:
        fmt.Println("Thumb")
    case 2:
        fmt.Println("Index")
    case 3:
        fmt.Println("Middle")
    case 4:
        fmt.Println("Ring")
    case 5:
        fmt.Println("Pinky")
    default: // 默认情况
        fmt.Println("incorrect finger number")
    }
}

在线运行程序[3]

fingerincorrect finger number
fingerfingerswitch finger:= 8; fingerfingerfinger

多表达式判断

通过用逗号分隔,可以在一个 case 中包含多个表达式。

package main

import (
    "fmt"
)

func main() {
    letter := "i"
    switch letter {
    case "a", "e", "i", "o", "u": // 一个选项多个表达式
        fmt.Println("vowel")
    default:
        fmt.Println("not a vowel")
    }
}

在线运行程序[4]

case "a","e","i","o","u":vowel

无表达式的 switch

switch truecase
package main

import (
    "fmt"
)

func main() {
    num := 75
    switch { // 表达式被省略了
    case num >= 0 && num <= 50:
        fmt.Println("num is greater than 0 and less than 50")
    case num >= 51 && num <= 100:
        fmt.Println("num is greater than 51 and less than 100")
    case num >= 101:
        fmt.Println("num is greater than 100")
    }

}

在线运行程序[5]

case num >= 51 && <= 100:num is greater than 51 and less than 100if else

Fallthrough 语句

fallthrough
75 is lesser than 10075 is lesser than 200
package main

import (
    "fmt"
)

func number() int {
    num := 15 * 5
    return num
}

func main() {

    switch num := number(); { // num is not a constant
    case num 50:
        fmt.Printf("%d is lesser than 50\n", num)
        fallthrough
    case num 100:
        fmt.Printf("%d is lesser than 100\n", num)
        fallthrough
    case num 200:
        fmt.Printf("%d is lesser than 200", num)
    }

}

在线运行程序[6]

number()case num < 100:75 is lesser than 100fallthrough75 is lesser than 200
75 is lesser than 100
75 is lesser than 200
fallthroughfallthrough statement out of place

这也是我们本教程的最后内容。还有一种 switch 类型称为 type switch 。我们会在学习接口的时候再研究这个。

希望您能享受本次阅读。请留下您宝贵的意见和建议。

上一教程 - 循环

下一教程 - Arrays 和 Slices[7]

推荐阅读

  • Go 经典入门系列 9:循环

福利 我为大家整理了一份 从入门到进阶的Go学习资料礼包 ,包含学习建议:入门看什么,进阶看什么。 关注公众号 「polarisxu」,回复 ebook 获取;还可以回复「进群」,和数万 Gopher 交流学习。

4102223b5c19e8755e349a9d379381a3.png