zoukankan      html  css  js  c++  java
  • go if switch range

    我们来看下 switch

    value6 := interface{}(byte(127))
        switch t := value6.(type){ // 这条语句无法编译通过。
        case  uint8,uint16: //byte是uint8别名
            fmt.Println("uint8 or uint16")
        case byte:
            fmt.Printf("byte")
        default:
            fmt.Printf("unsupported type: %T", t)
        }

    我们今天主要讨论了for语句和switch语句,不过我并没有说明那些语法规则,因为它们太简单了。我们需要多加注意的往往是那些隐藏在 Go 语言规范和最佳实践里的细节。

    这些细节其实就是我们很多技术初学者所谓的“坑”。比如,我在讲for语句的时候交代了携带range子句时只有一个迭代变量意味着什么。你必须知道在迭代数组或切片时只有一个迭代变量的话是无法迭代出其中的元素值的,否则你的程序可能就不会像你预期的那样运行了。

    还有,range表达式的结果值是会被复制的,实际迭代时并不会使用原值。至于会影响到什么,那就要看这个结果值的类型是值类型还是引用类型了。

    说到switch语句,你要明白其中的case表达式的所有子表达式的结果值都是要与switch表达式的结果值判等的,因此它们的类型必须相同或者能够都统一到switch表达式的结果类型。如果无法做到,那么这条switch语句就不能通过编译。

    最后,同一条switch语句中的所有case表达式的子表达式的结果值不能重复,不过好在这只是对于由字面量直接表示的子表达式而言的。

    请记住,普通case子句的编写顺序很重要,最上边的case子句中的子表达式总是会被最先求值,在判等的时候顺序也是这样。因此,如果某些子表达式的结果值有重复并且它们与switch表达式的结果值相等,那么位置靠上的case子句总会被选中。

    switch 很多种表达

    expr := 9 //默认不需要break
        switch expr {
        case 9:
            t.Log("is case ")
        }
    
        switch { //可以模拟if else
        case expr > 0 && expr < 10:
            t.Log("is case")
        }
    
        for n := 0; n < 5; n++ {
            switch {
            case n%2 == 0: // 多匹配
                t.Log("even")
            case n%2 == 1:
                t.Log("odd")
            }
        }
    func CheckType(v interface{})  {
        t := reflect.TypeOf(v)
        switch t.Kind() {
        case reflect.String:
            fmt.Println("type is string")
        case reflect.Int32:
            fmt.Println("type is int32")
    
        default:
            fmt.Println("type is unknown")
        }
    }
  • 相关阅读:
    Cocos2dx引擎10-事件派发
    IE无法打开internet网站已终止操作的解决的方法
    让程序在崩溃时体面的退出之Dump文件
    天将降大任于斯人也,必先苦其心志,劳其筋骨,饿其体肤,空乏其身,行拂乱其所为,所以动心忍性,增益其所不能
    RapeLay(电车之狼R)的结局介绍 (隐藏结局攻略)
    cocos 3.0 一键打包android平台应该注意的细节
    Matlab画图-非常具体,非常全面
    linux和windows文件名称长度限制
    Javascript的DOM操作
    50个高端大气上档次的管理后台界面模板
  • 原文地址:https://www.cnblogs.com/jackey2015/p/11731263.html
Copyright © 2011-2022 走看看