switch語句表達(dá)式條件可跨多個(gè)分支條件語句。
所有的示例代碼,都放在
F:\worksp\golang目錄下。安裝Go編程環(huán)境請(qǐng)參考:http://www.yiibai.com/go/go_environment.html
這里有一個(gè)基本的switch語句用法??梢栽谕粋€(gè)case語句中使用逗號(hào)分隔多個(gè)表達(dá)式。 在這個(gè)例子中也使用可選的 default 情況。
無表達(dá)式的switch語句是表達(dá)if/else邏輯的替代方式。這里還顯示了case表達(dá)式可以為非常量數(shù)據(jù)。
類型switch比較的是類型而不是值??梢允褂盟鼇戆l(fā)現(xiàn)接口值的類型。在這個(gè)例子中,變量t將具有對(duì)應(yīng)于其子句的類型。
switch.go的完整代碼如下所示 -
package main
import "fmt"
import "time"
func main() {
// Here's a basic `switch`.
i := 2
fmt.Print("Write ", i, " as ")
switch i {
case 1:
fmt.Println("one")
case 2:
fmt.Println("two")
case 3:
fmt.Println("three")
}
// You can use commas to separate multiple expressions
// in the same `case` statement. We use the optional
// `default` case in this example as well.
switch time.Now().Weekday() {
case time.Saturday, time.Sunday:
fmt.Println("It's the weekend")
default:
fmt.Println("It's a weekday")
}
// `switch` without an expression is an alternate way
// to express if/else logic. Here we also show how the
// `case` expressions can be non-constants.
t := time.Now()
switch {
case t.Hour() < 12:
fmt.Println("It's before noon")
default:
fmt.Println("It's after noon")
}
// A type `switch` compares types instead of values. You
// can use this to discover the the type of an interface
// value. In this example, the variable `t` will have the
// type corresponding to its clause.
whatAmI := func(i interface{}) {
switch t := i.(type) {
case bool:
fmt.Println("I'm a bool")
case int:
fmt.Println("I'm an int")
default:
fmt.Printf("Don't know type %T\n", t)
}
}
whatAmI(true)
whatAmI(1)
whatAmI("hey")
}
執(zhí)行上面代碼,將得到以下輸出結(jié)果 -
F:\worksp\golang>go run switch.go
Write 2 as two
It's the weekend
It's after noon
I'm a bool
I'm an int
Don't know type string