go 语言中默认的类型识别

下面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
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容