OStack程序员社区-中国程序员成长平台

标题: types - 为什么 Go 有几种不同的整数类型? [打印本页]

作者: 菜鸟教程小白    时间: 2022-8-16 06:38
标题: types - 为什么 Go 有几种不同的整数类型?

我发现 Go 中有不同的整数类型令人困惑。考虑到许多其他主要编程语言中不存在这些区别,定义这些不同类别的必要性是什么?

int  int8  int16  int32  int64
uint uint8 uint16 uint32 uint64 uintptr



Best Answer-推荐答案


Go有两种类型:

  • 架构依赖类型 int , uint , uintptr .和
  • 架构独立类型 int32 , int64

  • 依赖于体系结构的类型对于运行程序的机器具有适当的长度:
  • int是默认的有符号类型:它需要 32 位(4 字节)在 32
    位机和 64 位机上的 64 位(8 个字节);未签名的 uint 也是如此.
  • uintptr是一个足以存储指针值的无符号整数。

  • 与体系结构无关的类型具有由其名称指示的固定大小(以位为单位):

    对于整数,范围是:
    int8 (-128 -> 127)
    int16 (-32768 -> 32767)
    int32 (− 2,147,483,648 -> 2,147,483,647)
    int64 (− 9,223,372,036,854,775,808 -> 9,223,372,036,854,775,807)
    

    对于无符号整数 :
    uint8 (with alias byte, 0 -> 255)
    uint16 (0 -> 65,535)
    uint32 (0 -> 4,294,967,295)
    uint64 (0 -> 18,446,744,073,709,551,615)
    

    对于花车 :
    float32 (+- 1O-45 -> +- 3.4 * 1038 )
    (IEEE-754) float64 (+- 5 * 10-324 -> 1.7 * 10308 )
    
    int是提供最快处理速度的整数类型。
    整数的初始(默认)值为 0 ,对于浮点数,这是 0.0float32 可靠地精确到大约 7 个小数位,float64 精确到大约 15 个小数位。

    由于将浮点数与 == 进行比较,不可能达到完美的精度。或 !=必须非常小心!

    关于types - 为什么 Go 有几种不同的整数类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31266352/






    欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) Powered by Discuz! X3.4