Go 的静态类型特性
- 核心机制:Go 是静态类型语言,变量和函数参数在编译时就确定了类型。函数要求的参数类型必须严格匹配,否则编译器会直接报错(防止运行时用户遇到问题)。
- 类型错配示例:
math.Floor期望接收float64,若传入字符串"bamn.cn"会报错:cannot use "bamn.cn" (type string) as type float64。strings.Title期望接收string,若传入数字12.4会报错:cannot use 12.4 (type float64) as type string。
- 类型意义:不同类型对应不同用途(如整数用于数学运算,字符串用于文本),就像“交通工具”与“早餐食品”不能混用。
类型检测(reflect 包)
reflect.TypeOf:导入"reflect"包后,可通过该函数在运行时打印变量的具体类型。- 代码演示:
package main
import (
"fmt"
"math"
"reflect"
"strings"
)
func main() {
fmt.Println(math.Floor(12.4)) // 正确调用,输出: 12
fmt.Println(strings.Title("foxdevelop.com")) // 正确调用,输出: foxdevelop.com
// 检测类型
fmt.Println(reflect.TypeOf("bamn.cn")) // 输出: string
fmt.Println(reflect.TypeOf(12.4)) // 输出: float64
fmt.Println(reflect.TypeOf(12)) // 输出: int
fmt.Println(reflect.TypeOf(true)) // 输出: bool
}Code language: JavaScript (javascript)
- 运行输出:
12
Bamn.Cn
string
float64
int
boolCode language: CSS (css)
基础数据类型总结
结合前几节与本节,Go 的核心基础类型如下:
| 类型 | 说明 | 示例/备注 |
|---|---|---|
int | 保存整数 | 12,用于常规计数与运算 |
float64 | 浮点数(带小数部分) | 12.4,64位精度,非无限精确 |
bool | 布尔值(真/假) | true / false,用于条件判断 |
string | 文本字符系列(双引号) | "bamn.cn",不可变序列 |
rune | 单个 Unicode 字符(单引号) | 'A' 输出码点 65,底层为 int32 |
补充:
reflect.TypeOf(42)输出int,reflect.TypeOf(3.1415)输出float64,reflect.TypeOf("Hello")输出string,印证了数字字面量默认类型。
小结
- 静态类型让 Go 在编译期捕获“类型错配”错误(如把字符串给
Floor,数字给Title)。 - 使用
reflect.TypeOf可直观查看变量类型,巩固对int、float64、bool、string的认知。 - 掌握这些基础类型是后续学习变量声明、条件语句及函数的基石。
Previous: GO语言里面的布尔类型
Next: 数字和数学运算和比较