• 11——go语言数字类型


    Go语言支持整型和浮点型数字,并且原生支持复数,其中位的运算采用补码

    Go也有基于架构的类型,例如:int、uint和uintptr。

    这些类型的长度都是根据运行程序所在的操作系统类型所决定的:

    • intunit在32位操作系统上,它们均使用32位(4个字节),在64位操作系统上,它们均使用64位(8个字节)。
    • uintptr的长度被设定为足够存放一个指针即可。

    Go语言中没有float类型。(Go语言中只有float32float64)没有double类型。

    与操作系统架构无关的类型都有固定的大小,并且在类型的名称中就可以看出来:

     

     int型是计算最快的一种类型。

    整型的零值为0,浮点型的零值为0.0

     

    1. package main
    2. import (
    3. "fmt"
    4. "math"
    5. "unsafe"
    6. )
    7. func main() {
    8. var i8 int8
    9. var i16 int16
    10. var i32 int32
    11. var i64 int64
    12. var ui8 uint8
    13. var ui16 uint16
    14. var ui32 uint32
    15. var ui64 uint64
    16. fmt.Printf("%T %dB %v~%v\n", i8, unsafe.Sizeof(i8), math.MinInt8, math.MaxInt8) //int8 1B -128~127
    17. fmt.Printf("%T %dB %v~%v\n", i16, unsafe.Sizeof(i16), math.MinInt16, math.MaxInt16) //int16 2B -32768~32767
    18. fmt.Printf("%T %dB %v~%v\n", i32, unsafe.Sizeof(i32), math.MinInt32, math.MaxInt32) //int32 4B -2147483648~2147483647
    19. fmt.Printf("%T %dB %v~%v\n", i64, unsafe.Sizeof(i64), math.MinInt64, math.MaxInt64) //int64 8B -9223372036854775808~9223372036854775807
    20. fmt.Printf("%T %dB %v~%v\n", ui8, unsafe.Sizeof(ui8), 0, math.MaxUint8) //uint8 1B 0~255
    21. fmt.Printf("%T %dB %v~%v\n", ui16, unsafe.Sizeof(ui16), 0, math.MaxUint16) //uint16 2B 0~65535
    22. fmt.Printf("%T %dB %v~%v\n", ui32, unsafe.Sizeof(ui32), 0, math.MaxUint32) //uint32 4B 0~4294967295
    23. fmt.Printf("%T %dB %v~%v\n", ui64, unsafe.Sizeof(ui64), 0, uint64(math.MaxUint64)) //uint64 8B 0~18446744073709551615
    24. var f32 float32
    25. var f64 float64
    26. fmt.Printf("%T %dB %v~%v\n", f32, unsafe.Sizeof(f32), -math.MaxFloat32, math.MaxFloat32) //float32 4B -3.4028234663852886e+38~3.4028234663852886e+38
    27. fmt.Printf("%T %dB %v~%v\n", f64, unsafe.Sizeof(f64), -math.MaxFloat64, math.MaxFloat64) //float64 8B -1.7976931348623157e+308~1.7976931348623157e+308
    28. var ui uint
    29. ui = uint(math.MaxUint64) //再+1会导致overflows错误
    30. fmt.Printf("%T %dB %v~%v\n", ui, unsafe.Sizeof(ui), 0, ui) //uint 8B 0~18446744073709551615
    31. var imin, imax int
    32. imin = int(math.MinInt64)
    33. imax = int(math.MaxInt64)
    34. fmt.Printf("%T %dB %v~%v\n", imax, unsafe.Sizeof(imax), imin, imax) //int 8B -9223372036854775808~9223372036854775807
    35. }

     输出结果如下图所示:

     以二进制、八进制或十六进制浮点数的格式定义数字

    1. package main
    2. import "fmt"
    3. func main() {
    4. // 十进制
    5. var a int = 10
    6. fmt.Printf("%d \n", a) //10
    7. fmt.Printf("%b \n", a) //1010 占位符 %b 表示二进制
    8. //八进制
    9. var b int = 077
    10. fmt.Printf("%o \n", b) //77
    11. //十六进制
    12. var c int = 0xff
    13. fmt.Printf("%x \n", c) //ff
    14. fmt.Printf("%X \n", c) //FF
    15. }

     浮点型

    Go语言支持两种浮点型数:float32float64。这两种浮点型数据格式遵循IEEE 754标准:float32的浮点数的最大范围约3.4e38,可以使用常量定义:math.MaxFloat32

    打印浮点数时,可以使用fmt包配合动词%f,代码如下:

    1. package main
    2. import (
    3. "fmt"
    4. "math"
    5. )
    6. func main() {
    7. fmt.Printf("%f\n", math.Pi)//3.141593
    8. fmt.Printf("%.2f\n", math.Pi)//3.14
    9. }

    复数

    complex64和complex128

    复数有实部和虚部,complex64的实部和虚部为32位,complex128的实部和虚部为64位

    1. package main
    2. import (
    3. "fmt"
    4. )
    5. func main() {
    6. var c1 complex64 = 1 + 2i
    7. var c2 complex128 = 2 + 3i
    8. fmt.Println(c1)
    9. fmt.Println(c2)
    10. }

  • 相关阅读:
    基于HiKariCP组件,分析连接池原理
    Postman自动化测试实战:使用脚本提升测试效率
    C++(day7)
    SpringBoot DeferredResult 长轮询实现实现方式?
    计算机网络——基本概念(计算机网络,Internet,网络协议)
    RSocket 与 gRPC 基准测试
    kubernetes集群安装实战
    双十一购物狂欢节是如何轰动全球的
    Maven引入Aspose依赖
    使用Docker辅助图像识别程序开发:在Docker中显示GUI、访问GPU、USB相机以及网络
  • 原文地址:https://blog.csdn.net/qq_37899792/article/details/126698311