数据类型详解(布尔值、整型、浮点型、字符串等)-《Go语言实战指南》
Go语言是一门静态强类型语言,所有变量在编译时必须明确其数据类型。本章将详细介绍Go的基础数据类型,帮助你理解并正确使用它们。
一、数据类型分类总览
Go 的基础数据类型可以分为以下几类:
类型分类 | 代表类型 | 示例 |
布尔类型 | bool | true , false |
整数类型 | int , int8 等 | 123 , -42 |
浮点类型 | float32 , float64 | 3.14 , -0.01 |
字符串类型 | string | "hello" |
字符类型 | rune | 'A' , '中' |
无符号整数 | uint , uint8 等 | 255 , 0 |
字节类型 | byte | byte('A') |
二、布尔值(bool)
布尔类型只有两个值:true
和 false
,常用于条件判断。
var flag bool = true
if flag {fmt.Println("flag 为真")
}
注意事项:
- • 不能将布尔值与整数直接比较,如:
if flag == 1
是非法的。 - • 零值为
false
。
三、整型(int, int8, int16, int32, int64)
Go提供多种整型:
类型 | 占用字节 | 范围 |
int | 平台相关 | 通常为32位或64位 |
int8 | 1字节 | -128 到 127 |
int16 | 2字节 | -32,768 到 32,767 |
int32 | 4字节 | -2,147,483,648 到 2,147,483,647 |
int64 | 8字节 | 极大范围 |
无符号类型:uint
, uint8
, uint16
, uint32
, uint64
常见别名:
- •
byte
是uint8
- •
rune
是int32
,常用于表示 Unicode 字符
示例:
var age int = 30
var score int16 = 256
四、浮点型(float32, float64)
Go支持两种浮点数类型:
类型 | 精度范围 |
float32 | 精度约7位 |
float64 | 精度约15~16位(推荐) |
默认浮点常量为 float64
类型。
示例:
var pi float64 = 3.14159
speed := 99.8
注意:
- • 浮点数存在精度误差;
- • 可用
math
包做数值运算(如math.Sqrt
,math.Pow
等)。
五、字符串(string)
字符串是UTF-8编码的不可变字节序列。
var name string = "Golang"
greet := "你好,世界"
常用操作:
fmt.Println(len(greet)) // 字节长度
fmt.Println(greet[0]) // 取第一个字节(不是字符)
fmt.Println(greet[0:6]) // 截取字节范围
字符串拼接:
s1 := "Hello"
s2 := "World"
s := s1 + " " + s2
使用反引号 `...`
可创建原样字符串(保留换行和空格):
msg := `这是
多行
文本`
六、字符(rune)
Go没有独立的 char
类型,字符使用 rune
表示(实际上是 int32
):
var ch rune = '中'
fmt.Printf("%c, Unicode: %U\n", ch, ch)
使用场景:处理 Unicode 字符。
七、类型转换
Go中类型不会自动转换,必须显式转换:
var a int = 100
var b float64 = float64(a)var c string = strconv.Itoa(a) // int 转 string
导入 strconv
包后支持常见类型互转:
strconv.Atoi("123") // string -> int
strconv.ParseFloat("3.14", 64) // string -> float64
八、小结
- • Go的数据类型强制、安全;
- • 推荐使用
int
,float64
,string
,bool
等默认类型; - • 字符串是不可变类型,处理字符时用
rune
; - • 类型之间必须显式转换,使用
strconv
进行字符串和数值转换。