switch语句
switch、case表达式都会被求职,执行顺序:自左向右,自上而下。只有第一个与与switch表达式求值结果相等的case表达式分支会执行。
default case最多只有一个,如果没有匹配到case分支,并且存在default case,default case才会执行
switch 表达式可以省略,此时true作为Switch表达式的结果
var content string content = "cccc" switch content{ default: fmt.Println("unknow languge") case "python": fmt.Println("an interpreted language") case "go": fmt.Println("a compiled language") }
switch 包含一条子语句来初始化变量
var content string switch lang:=strings.TrimSpace(content);lang{ default: fmt.Println("unknow languge") case "python": fmt.Println("an interpreted language") case "go": fmt.Println("a compiled language") }
fallthrough跳转到下一个case执行
var content string content = "python" switch lang:=strings.TrimSpace(content);lang { default: fmt.Println("unknow languge") case "python": fmt.Println("an interpreted language") fallthrough case "go": fmt.Println("a compiled language") }
类型Switch语句
v.(type)只能用在switch中,是一个特殊的类型断言,虽然特殊,但是也遵循类型断言的规则
//方式1
var v interface{} v=map[string]string{} switch v.(type) { case string: fmt.Printf("The string is '%s'.\n",v.(string)) //类型断言 v.(string) case int,uint64,uint8,uint16,uint32,int8,int16,int64,int32: //,号分割标识或 fmt.Printf("the integer is %d.\n",v) default: fmt.Printf("unsupport value. (type=%T)",v) }
//方式2 //i:= v.(type) 类型转换后的值保存在i中,i的类型一定是v的值的时机类型 v=map[string]string{} switch i:= v.(type) { case string: fmt.Printf("The string is '%s'.\n",i) //类型断言 v.(string) case int,uint64,uint8,uint16,uint32,int8,int16,int64,int32: //,号分割标识或 fmt.Printf("the integer is %d.\n",i) default: fmt.Printf("unsupport value. (type=%T)",i) }
标签:case,控制,string,流程,content,switch,Println,fmt From: https://www.cnblogs.com/Hale-wang/p/16591066.html