返回

Go lang 1.18 新手入门:从零开始掌握复合容器类型

后端

在上一讲中,我们了解了容器数据类型及其基本概念。本讲将深入探索 Go 语言中的复合容器类型,包括切片、数组、字典和结构体。这些数据结构在 Go 语言中扮演着举足轻重的角色,掌握它们的使用对于编写健壮、可维护的代码至关重要。

切片:灵活性与动态性的完美结合

切片是 Go 语言中一种非常强大的数据结构,它可以存储任意数量的相同数据类型的元素。切片与数组不同,它的大小是动态的,可以根据需要随时进行扩展或缩减。切片的声明与数组类似,只需要使用 []T 即可,其中 T 代表元素的数据类型。

// 声明一个存储整型的切片
var numbers []int

// 通过 append 函数向切片添加元素
numbers = append(numbers, 1, 2, 3, 4, 5)

// 访问切片中的元素
fmt.Println(numbers[2]) // 输出:3

// 使用 for 循环遍历切片
for i, num := range numbers {
    fmt.Println(i, num) // 输出:0 1, 1 2, 2 3, 3 4, 4 5
}

数组:静态尺寸的可靠之选

数组是另一种常见的复合容器类型,与切片类似,它也可以存储相同数据类型的元素。然而,数组的大小是固定的,一旦声明就不能再改变。数组的声明方式如下:

// 声明一个长度为 5 的整型数组
var numbers [5]int

// 访问数组中的元素
fmt.Println(numbers[2]) // 输出:0

// 使用 for 循环遍历数组
for i := 0; i < len(numbers); i++ {
    fmt.Println(numbers[i]) // 输出:0, 0, 0, 0, 0
}

字典:键值对的灵活存储

字典是 Go 语言中一种非常有用的复合容器类型,它可以存储键值对。键值对由一个键和一个值组成,键是唯一的,而值可以是任何类型的数据。字典的声明方式如下:

// 声明一个存储键值对的字典
var myMap = map[string]int{
    "Alice":   25,
    "Bob":     30,
    "Charlie": 35,
}

// 访问字典中的元素
fmt.Println(myMap["Alice"]) // 输出:25

// 添加键值对到字典
myMap["Dave"] = 40

// 删除字典中的键值对
delete(myMap, "Bob")

// 使用 for 循环遍历字典
for key, value := range myMap {
    fmt.Println(key, value) // 输出:Alice 25, Charlie 35, Dave 40
}

结构体:自定义数据类型的利器

结构体是 Go 语言中一种非常强大的复合容器类型,它允许你将不同类型的数据组合成一个自定义的数据类型。结构体的声明方式如下:

// 声明一个名为 Person 的结构体
type Person struct {
    name string
    age  int
}

// 创建一个 Person 结构体的实例
var alice = Person{
    name: "Alice",
    age:  25,
}

// 访问结构体中的字段
fmt.Println(alice.name) // 输出:Alice
fmt.Println(alice.age)  // 输出:25

复合容器类型是 Go 语言中非常重要的组成部分,掌握它们的使用对于编写健壮、可维护的代码至关重要。通过本讲的学习,你已经对切片、数组、字典和结构体等复合容器类型有了基本的了解。在接下来的课程中,我们将继续深入探索这些数据结构的使用技巧和应用场景,敬请期待!