GO语言的类型

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) 输出 intreflect.TypeOf(3.1415) 输出 float64reflect.TypeOf("Hello") 输出 string,印证了数字字面量默认类型。

小结

  • 静态类型让 Go 在编译期捕获“类型错配”错误(如把字符串给 Floor,数字给 Title)。
  • 使用 reflect.TypeOf 可直观查看变量类型,巩固对 intfloat64boolstring 的认知。
  • 掌握这些基础类型是后续学习变量声明、条件语句及函数的基石。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注