go 语言第一节课(2)

go 语言数据类型

/*
1.如何计算数据占用大小
在C语言中我们可以通过sizeof来计算数据类型占用的内存大小
在Go语言中我们也可以通过Sizeof来计算数据类型占用的内存大小

2.如何使用Sizeof
2.1导入unsafe
2.2利用unsafe.Sizeof调用函数

注意点:
Go语言中的int类型, 会根据当前系统自动调整, 如果系统是64位的, 那么int就会自动变成int64, 如果系统是32位的, 那么int就会自耦单变成int32
 */
    // 1.有符号的整型
    fmt.Println("int size = ", unsafe.Sizeof(int(0)))  //int size =  8
    fmt.Println("int8 size = ", unsafe.Sizeof(int8(0)))  //int8 size =  1
    fmt.Println("int16 size = ", unsafe.Sizeof(int16(0)))  //int16 size =  2
    fmt.Println("int32 size = ", unsafe.Sizeof(int32(0)))  //int32 size =  4
    fmt.Println("int64 size = ", unsafe.Sizeof(int64(0)))  //int64 size =  8

    // 2.无符号的整型
    fmt.Println("uint size = ", unsafe.Sizeof(uint(0)))  //uint size =  8
    fmt.Println("uint8 size = ", unsafe.Sizeof(uint8(0)))  //uint8 size =  1
    fmt.Println("uint16 size = ", unsafe.Sizeof(uint16(0)))  //uint16 size =  2
    fmt.Println("uint32 size = ", unsafe.Sizeof(uint32(0)))  //uint32 size =  4
    fmt.Println("uint64 size = ", unsafe.Sizeof(uint64(0)))  //uint64 size =  8
    fmt.Println("uintptr size = ", unsafe.Sizeof(uintptr(0)))  //uintptr size =  8

    // 3.字符类型
    // byte相当于C语言中的char, 专门用于保存一个字符  'a'
    // rune本质是int32, 专门用于保存一个中文字符      '李'
    // 注意点: GO语言默认就支持中文,默认就是按照UTF-8来处理 , 在UTF-8中一个中文占3个字节
    // 过去有时候在Windows中一个中文占2个字节, 在Linux中一个中文占3个字节, 非常不方便我们做兼容处理, 所以Go有效的解决了过去的这个问题
    fmt.Println("byte size = ", unsafe.Sizeof(byte(0)))  //byte size =  1
    fmt.Println("rune size = ", unsafe.Sizeof(rune(0)))  //rune size =  4

    // 4.浮点类型
    fmt.Println("float32 size = ", unsafe.Sizeof(float32(0)))  //float32 size =  4
    fmt.Println("float64size = ", unsafe.Sizeof(float64(0)))  //float64size =  8

    // 5.布尔类型
    fmt.Println("true size = ", unsafe.Sizeof(true))  //true size =  1
    fmt.Println("false size = ", unsafe.Sizeof(false))  //false size =  1

你可能感兴趣的:(go 语言第一节课(2))