11——go语言数字类型

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

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

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

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

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

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

 

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

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

 

package main

import (
	"fmt"
	"math"
	"unsafe"
)

func main() {
	var i8 int8
	var i16 int16
	var i32 int32
	var i64 int64
	var ui8 uint8
	var ui16 uint16
	var ui32 uint32
	var ui64 uint64

	fmt.Printf("%T %dB %v~%v\n", i8, unsafe.Sizeof(i8), math.MinInt8, math.MaxInt8)     //int8 1B -128~127
	fmt.Printf("%T %dB %v~%v\n", i16, unsafe.Sizeof(i16), math.MinInt16, math.MaxInt16) //int16 2B -32768~32767
	fmt.Printf("%T %dB %v~%v\n", i32, unsafe.Sizeof(i32), math.MinInt32, math.MaxInt32) //int32 4B -2147483648~2147483647
	fmt.Printf("%T %dB %v~%v\n", i64, unsafe.Sizeof(i64), math.MinInt64, math.MaxInt64) //int64 8B -9223372036854775808~9223372036854775807

	fmt.Printf("%T %dB %v~%v\n", ui8, unsafe.Sizeof(ui8), 0, math.MaxUint8)            //uint8 1B 0~255
	fmt.Printf("%T %dB %v~%v\n", ui16, unsafe.Sizeof(ui16), 0, math.MaxUint16)         //uint16 2B 0~65535
	fmt.Printf("%T %dB %v~%v\n", ui32, unsafe.Sizeof(ui32), 0, math.MaxUint32)         //uint32 4B 0~4294967295
	fmt.Printf("%T %dB %v~%v\n", ui64, unsafe.Sizeof(ui64), 0, uint64(math.MaxUint64)) //uint64 8B 0~18446744073709551615

	var f32 float32
	var f64 float64
	fmt.Printf("%T %dB %v~%v\n", f32, unsafe.Sizeof(f32), -math.MaxFloat32, math.MaxFloat32) //float32 4B -3.4028234663852886e+38~3.4028234663852886e+38
	fmt.Printf("%T %dB %v~%v\n", f64, unsafe.Sizeof(f64), -math.MaxFloat64, math.MaxFloat64) //float64 8B -1.7976931348623157e+308~1.7976931348623157e+308

	var ui uint
	ui = uint(math.MaxUint64)                                  //再+1会导致overflows错误
	fmt.Printf("%T %dB %v~%v\n", ui, unsafe.Sizeof(ui), 0, ui) //uint 8B 0~18446744073709551615

	var imin, imax int
	imin = int(math.MinInt64)
	imax = int(math.MaxInt64)
	fmt.Printf("%T %dB %v~%v\n", imax, unsafe.Sizeof(imax), imin, imax) //int 8B -9223372036854775808~9223372036854775807
}

 输出结果如下图所示:

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

package main

import "fmt"

func main() {
	// 十进制
	var a int = 10
	fmt.Printf("%d \n", a) //10
	fmt.Printf("%b \n", a) //1010 占位符 %b 表示二进制

	//八进制
	var b int = 077
	fmt.Printf("%o \n", b) //77

	//十六进制
	var c int = 0xff
	fmt.Printf("%x \n", c) //ff
	fmt.Printf("%X \n", c) //FF
}

 浮点型

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

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

package main

import (
	"fmt"
	"math"
)

func main() {
	fmt.Printf("%f\n", math.Pi)//3.141593
	fmt.Printf("%.2f\n", math.Pi)//3.14
}

复数

complex64和complex128

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

package main

import (
	"fmt"
)

func main() {
	var c1 complex64 = 1 + 2i
	var c2 complex128 = 2 + 3i
	fmt.Println(c1)
	fmt.Println(c2)
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值