Go 语言数据类型概览📘

Go 语言数据类型概览


✅ 数据类型分类、声明与初始化一览表

类型分类 数据类型 声明方式 初始化示例 零值 说明
基本类型 布尔型 bool var a bool a := true
var b = false
false 只能是 truefalse
整型 int, int8~int64 var a int a := 100
var b int = -50
ptr := new(int) // 默认为 0
0 int 的大小依赖平台(32/64位)
无符号整型 uint, uint8~uint64 var a uint a := uint(255)
var b uint64 = 1000000000
0 不可为负数
浮点型 float32, float64 var a float64 a := 3.14
var b float32 = 1.23e4
0.0 推荐使用 float64(精度更高)
复数型 complex64, complex128 var a complex128 a := complex(2, 3)
b := 1 + 2i
(0+0i) 表示复数:如 1 + 2i
字符串 string var s string s := "Hello"
t := 多行字符串\n不会转义``
"" UTF-8 编码,不可变,反引号保留格式
字节 byte var b byte b := byte('A')
c := byte(65)
0 实际是 uint8 的别名
rune rune var r rune r := '中'
s := rune(0x4E2D)
0 实际是 int32 的别名,用于 Unicode
复合类型 数组 [n]T var arr [3]int arr := [3]int{1, 2, 3}
autoArr := [...]int{1, 2, 3}
各元素零值 固定长度,不可扩容
切片 []T var s []int s := []int{1, 2, 3}
t := make([]int, 2, 5)
nil 动态数组,底层依赖数组
映射 map[K]V var m map[string]int m := map[string]int{"age": 25}
n := make(map[string]int)
nil 键值对集合,必须先初始化后使用
结构体 struct type User struct { Name string } u := User{Name: "Tom"}
v := new(User) // 所有字段为零值
各字段零值 自定义复合类型,支持嵌套结构
指针 *T var p *int i := 10
p := &i
q := new(int) // 指向默认值 0
nil 存储变量地址,可通过 & 获取指针
函数 func(...) var f func(int) bool f := func(x int) bool { return x > 0 } nil 一等公民,可作为参数传递
接口 interface{} var i interface{} i := "hello"
j := 123
k := func(){}
nil 可以保存任意类型,常用于泛型或回调
特殊类型 空接口 any(Go 1.18+) var v any v := "abc"
w := 123.45
x := []int{1, 2}
nil interface{},用于泛型编程
Channel chan T var ch chan int ch := make(chan int) nil 并发通信通道,必须用 make(chan T) 创建
错误类型 error var err error err := errors.New("出错了")
err2 := fmt.Errorf("错误码:%d", 404)
nil 标准错误处理,通常通过 errors.New()fmt.Errorf() 创建

🧩 零值一览表(按类型)

类型 零值
bool false
int 0
uint 0
float32/64 0.0
complex64/128 (0+0i)
string ""
array 各元素为零值组成的数组
slice nil
map nil
struct 各字段为零值组成的新结构体
pointer nil
interface nil
func nil
channel nil
error nil
any nil

🧠 使用建议

内容 建议
初始化方式选择 - 字面量最简洁直观
- make 用于切片、映射、Channel 的动态初始化
- new 用于获取指针并分配内存
零值机制 所有变量未显式初始化时都具有默认零值,避免空指针错误
类型安全 Go 是静态强类型语言,必须显式转换类型,不能隐式转换
推荐工具 使用 go vetgolintgo fmt 辅助开发,确保类型正确性和风格统一
posted @ 2025-06-25 07:46  红尘过客2022  阅读(21)  评论(0)    收藏  举报