美文网首页
go 语言中默认的类型识别

go 语言中默认的类型识别

作者: 周紫一 | 来源:发表于2018-06-04 20:50 被阅读35次

    下面x,y是什么类型

    var x = 23.2
    var y = 23
    
    package main
    
    import (
        "fmt"
        "unsafe"
    )
    
    func main()  {
        
        var x = 23.2
        fmt.Println(x)
        fmt.Println(unsafe.Sizeof(x))
        t(x)
    
        var y = 23
        fmt.Println(y)
        fmt.Println(unsafe.Sizeof(y))
        t(y)
    }
    
    func t(i interface{}) {  //函数t有一个参数i
        switch i.(type) { //多选语句switch
        case string:
            //是字符时做的事情
            fmt.Println("this is a string")
            break
        case int:
            //是整数时做的事情
            fmt.Println("this is a int")
            break
        case bool:
            fmt.Println("this is a bool")
            break
        case int32:
            fmt.Println("this is a int32")
            break
        case float32:
            fmt.Println("this is a float32")
            break
        case float64:
            fmt.Println("this is a float64")
            break
        default:
                fmt.Println("this is a default")
        }
        return
    }
    
    

    结果是这样的

    显然:如果不声明类型的话,默认的类型都是占用64位(如果机器是32位的话,默认是32位)
    整形默认是 64位的int, 浮点型默认是64位的float64

    记忆方法;
    1.位数,机器的cpu位数 64位机器占8字节,那么默认就是8字节的类型
    2.int (机器位数有关)
    3.float+(32/64)机器位数有关
    4.int + (8/16/32/64) 不参与默认设置
    5int32 或者rune 参与 字符的默认

    image.png

    case中同时出现int32 和 rune会报错,也就是说他两是一样的

    image.png

    相关文章

      网友评论

          本文标题:go 语言中默认的类型识别

          本文链接:https://www.haomeiwen.com/subject/bqrejftx.html