go ---switch语句
package main import ( "fmt" ) func main() { var ar = [...]string{"A", "B", "D", "E"} for _, content := range ar { switch content { case "A": fmt.Println("AAA") case "B", "C", "D": fmt.Println("BBB") default: fmt.Println("CCC") } } }
输出:
AAA
BBB
BBB
CCC
使用fallthrough,来向下一个case语句转移流程控制权,
package main import ( "fmt" ) func main() { var ar = [...]string{"A", "B", "D", "E"} for _, content := range ar { switch content { case "A": fallthrough case "B", "C", "D": fmt.Println("BBB") default: fmt.Println("CCC") } } }
输出:
BBB
BBB
BBB
CCC
类型switch语句:对类型进行判定,而不是值
package main import ( "fmt" ) func main() { v := 11 switch i := interface{}(v).(type) { case int, int8, int16, int32, int64: fmt.Printf("A signed integer: %v. the type is :%T\n", v, v) fmt.Printf("A signed integer: %v. the type is :%T\n", i, i) case uint, uint8, uint16, uint32, uint64: fmt.Printf("A unsigned integer: %v. the type is :%T\n", v, v) fmt.Printf("A unsigned integer: %v. the type is :%T\n", i, i) default: fmt.Println("Unknown!") } }
输出:
A signed integer: 11. the type is :int
A signed integer: 11. the type is :int
package main import ( "fmt" ) func main() { var v interface{} v = "hi" switch v.(type) { case string: fmt.Printf("The string is %v \n", v.(string)) case int, int8, int16, int32, int64: fmt.Printf("A signed integer: %v. the type is :%T\n", v, v) case uint, uint8, uint16, uint32, uint64: fmt.Printf("A unsigned integer: %v. the type is :%T\n", v, v) default: fmt.Println("Unknown!") } }
输出:
The string is hi