golang流程控制

1、switch细节

  • switch的穿透fallthrought
var num int = 10
switch num {
    case 10:
        fmt.Println("ok1")
        fallthrough // 默认只穿透一层
    case 20:
        fmt.Println("ok2")
    default:
        fmt.Println("没匹配到~~~~")
}
  • type-switch 来判断某个interface变量中实际指向的变量类型
var x interface{}
var y = 10.0
x = y
switch i := x.(type) {
    case nil:
    fmt.Printf(" x的类型是:%T", i)
    case int:
    fmt.Printf(" x的类型int)
    ...
}

2、for循环

  • 遍历字符串
遍历字符串是按字节遍历
var str string = "hellow,world"
for i := 1; i < len(str); i++ {
    fmt.Println("%c", str[i])
}

for-range 遍历字符串是按字符遍历,解决中文遍历问题
for index, val := range str {
    fmt.Println("index=%d,val=%c", index, val)
}
  • break 标签
lable2:
for i := 0; i < 4; i++ {
    lable1:
    for j := 0; j < 10; j++ {
        if j == 2 {
            break lable2 // 直接跳出lable2 的循环
        }
    }
}
  • continue 标签
lable2:
for i := 0; i < 4; i++ {
    lable1:
    for j := 0; j < 10; j++ {
        if j == 2 {
            continue lable2 // 跳到lable2 接着循环
        }
    }
}
相关文章
相关标签/搜索