Bootstrap

【Golang学习之旅】Go 语言数据类型详解(string、slice、map等)

前言

✅ 适合人群:Golang 新手 | 后端开发者 | 面试求职者
✅ 文章亮点:超详细解析 + 代码示例 + 实战应用
✅ 目标:掌握 Go 语言核心数据类型,助你写出高效、稳定的 Go 代码!

1. Go语言数据类型概览

Go语言是一种静态强类型语言,所有变量在使用前都必须指定类型,类型一旦确定,就不能随意更改。Go语言的数据类型大致分为以下几类:

类别数据类型说明
基本类型boolstringintfloat常见的基本数据类型
复合类型array(数组)、slice(切片)存储多个元素的集合
映射类型map(哈希表)键值对存储结构
结构体struct自定义数据结构
接口类型interface{}可用于实现多态
指针类型*T存储变量地址
通道类型chan并发通信机制

🔹 为什么要了解 Go 语言数据类型?
✅ 代码更安全(静态类型检查,减少错误)
✅ 性能更优(高效的内存管理)
✅ 更易维护(强类型保证代码稳定性)

2. Go语言基本数据类型

2.1 整型(int,uint,float)

Go语言支持有符号整数无符号整数

var a int = 10  // 标准int类型(与cpu位数有关)
var b int8 = 127  // 8位整数(-127 ~ 127)
var c uint16 = 65535 // 16位无符号整数(0 ~ 65535)
var d int32 = 2147483647 // 32位整数
var e int64 = 9223372036854775807  // 64位整数

🔹 Go 语言的整数类型取值范围:

类别大小取值范围
int88位-128 ~ 127
uint88位0 ~ 255
int1616位-32,768 ~ 32,767
uint1616位0 ~ 65,535
int3232位-2,147,483,648 ~ 2,147,483,647
uint3232 位0 ~ 4,294,967,295
int6464 位-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
uint6464位0 ~ 18,446,744,073,709,551,615
浮点数(float32、float64)
var pi float32 = 3.1415926  // 32位浮点数
var e float64 = 2.718281828 // 64位浮点数(推荐) 

2.2 布尔类型(bool)

var isGoFun bool = true
fmt.Println(isGoFun) // 输出: true

🔹 布尔值只有 truefalse,不能与 01 互换。

2.3 字符串(string)

Go 语言的 string 是 不可变 的 UTF-8 编码字符串,默认使用双引号"" 定义。

var hello string = "Hello, Golang!"
fmt.Println(hello)

🔹 多行字符串(使用反引号 `)

var multiLine = `第一行
第二行
第三行`
fmt.Println(multiLine)

🔹 字符串拼接

s1 := "Hello"
s2 := "Go"
result := s1 + ", " + s2 + "!"
fmt.Println(result) // 输出: Hello, Go!

3. Go 语言复合数据类型

3.1 数组(Array)

Go 语言数组是 固定大小的,一旦定义后,不能扩展。

var arr [3]int = [3]int{1, 2, 3} // 方式1
arr2 := [...]int{4, 5, 6}        // 方式2
fmt.Println(arr, arr2) 

🔹 遍历数组

for i, v := range arr {
    fmt.Printf("索引: %d, 值: %d\n", i, v)
}

3.2 切片(Slice)

🔹 切片是 Go 语言最常用的数据结构,类似动态数组,可变长度。

slice := []int{1, 2, 3}
slice = append(slice, 4, 5) // 添加元素
fmt.Println(slice) // [1 2 3 4 5]

🔹 切片截取

subSlice := slice[1:3] // 获取索引 1 到 3 之间的元素
fmt.Println(subSlice) // [2 3]

3.3 映射(Map)

🔹 Map 是 Go 语言中的哈希表(键值对存储)

person := map[string]int{"Alice": 25, "Bob": 30}
fmt.Println(person["Alice"]) // 输出 25

person["Charlie"] = 35 // 添加元素
delete(person, "Bob") // 删除元素

🔹 遍历 Map

for k, v := range person {
    fmt.Printf("Key: %s, Value: %d\n", k, v)
}

4. 结构体(Struct)

🔹 Go 语言支持自定义数据类型(类似面向对象的类)

type Person struct {
    Name string
    Age  int
}

func main() {
    p := Person{Name: "Alice", Age: 25}
    fmt.Println(p.Name, p.Age) // Alice 25
}

5. 指针(Pointer)

🔹 Go 语言的指针用于存储变量的地址

var a int = 42
var p *int = &a // 指针 p 指向变量 a
fmt.Println(*p) // 通过指针解引用,输出 42

总结 & 进阶学习方向

📌 本篇文章介绍了 Go 语言的常见数据类型,包括 string、slice、map 等,帮助你掌握 Go 语言基础。
📌 进阶学习:Go 并发(Goroutine)、微服务(gRPC)、Web 开发(Gin 框架)
📌 学习资源:Go 官方文档

;