4.数字
1. 整数类型
整数类型用于表示没有小数部分的数字,分为有符号和无符号两种。
1.1 有符号整数(Signed Integers)
可以表示正数、零和负数。有符号整数的范围包括负值和正值:
int8
: 8 位,范围为 -128 到 127int16
: 16 位,范围为 -32,768 到 32,767int32
: 32 位,范围为 -2,147,483,648 到 2,147,483,647int64
: 64 位,范围为 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807
1.2 无符号整数(Unsigned Integers)
只表示非负数(正数和零):
uint8
: 8 位,范围为 0 到 255uint16
: 16 位,范围为 0 到 65,535uint32
: 32 位,范围为 0 到 4,294,967,295uint64
: 64 位,范围为 0 到 18,446,744,073,709,551,615
1.3 平台相关整数
int
: 根据操作系统决定大小,在 32 位系统上是 32 位,在 64 位系统上是 64 位。uint
: 根据操作系统决定大小,在 32 位系统上是 32 位,在 64 位系统上是 64 位。
1.4 指针整数类型
uintptr
: 专用于存储指针值的无符号整数类型,其大 小取决于操作系统。
2. 浮点数类型
浮点数类型用于表示带有小数部分的数字,常用于精确计算和科学计算。
float32
: 32 位浮点数,约 6-7 位十进制精度float64
: 64 位浮点数,约 15 位十进制精度
注意:float64
是 Go 语言中浮点数的默认类型,精度更高,建议在高精度要求的场景中使用。
3. 复数类型
复数类型用于表示具有实部和虚部的数。Go 语言原生支持复数操作。
complex64
: 由两个float32
组成的复数,表示范围有限complex128
: 由两个float64
组成的复数,表示更高的精度
可以使用 complex(real, imag)
函数定义复数,例如:
var c complex128 = complex(5.0, 12.0) // 表示 5 + 12i
4. 数字定义
4.1 定义数字类型
package main
import (
"fmt"
)
func main() {
// 整数定义
var i int = 100
var u uint = 200
var smallInt int8 = 120
// 浮点数定义
var f32 float32 = 3.14
var f64 float64 = 2.718281828
// 复数定义
var c64 complex64 = complex(1.5, 2.5)
var c128 complex128 = complex(3.14, 4.14)
fmt.Println("整数:", i, u, smallInt)
fmt.Println("浮点数:", f32, f64)
fmt.Println("复数:", c64, c128)
}
4.2 reflect.Type0f 查看数据类型
reflect.TypeOf
返回一个 reflect.Type
对象,可以进一步用于查看、判断、或操作变量的类型信息。
package main
import (
"fmt"
"reflect"
)
func main() {
var num int = 42
var name string = "Golang"
var pi float64 = 3.14
var flag bool = true
fmt.Println("num 的类型:", reflect.TypeOf(num))
fmt.Println("name 的类型:", reflect.TypeOf(name))
fmt.Println("pi 的类型:", reflect.TypeOf(pi))
fmt.Println("flag 的类型:", reflect.TypeOf(flag))
}
输出值
num 的类型: int
name 的类型: string
pi 的类型: float64
flag 的类型: bool
5. 布尔值
在 Go 语言中,布尔型变量只有两个值:true
和 false
。这是布尔值的定义本质,代表逻辑上的真与假。
布尔值的类型在 Go 中用关键字 bool
表示,bool
类型并不会像其他一些语言那样将整数 0
和 1
作为布尔值使用,它严格限定了只有 true
和 false
两个值,这是 Go 语言类型安全性和简洁性的体现。
查看布尔值的内存占用
unsafe.Sizeof()
用于查看布尔类型变量在内存中的占用大小。
Go 语言中,布尔值占用 1 个字节(8 位) 的存储空间。
package main
import (
"fmt"
"unsafe"
)
func main() {
var b = true
fmt.Println(b, "占用字节:", unsafe.Sizeof(b)) // 输出:true 占用字节:1
}
unsafe
包:Go 提供的unsafe
包允许程序员执行一些非类型安全的操作,其中unsafe.Sizeof()
用于返回变量所占用的字节数。- 在这个示例中,
unsafe.Sizeof(b)
返回 1,表示布尔类型变量b
占用 1 字节。