Go语言入门教程之Arrays、Slices、Maps、Range操作简明总结

Hazel
Hazel
发布时间:2026-10-14| 3人浏览过
原创

本文详细介绍Go语言中常用的四种数据结构:数组(Array)、切片(Slice)、映射(Map)以及遍历方法(Range),通过代码示例讲解其创建、读写、修改及遍历的实际操作。

数组(Arrays)的使用

在Go语言中,数组是一组固定长度的有序元素集合。一旦声明,其长度便不可改变。以下是关于数组的基本操作和多维构建的代码示例:

package main
import "fmt"
func main() {
    // 1. 声明一个长度为5的整型数组,初始值为零值(0)
    var a [5]int
    fmt.Println("emp:", a)

    // 2. 通过索引赋值
    a[4] = 100
    fmt.Println("set:", a)
    fmt.Println("get:", a[4])

    // 3. 获取数组长度
    fmt.Println("len:", len(a))

    // 4. 声明并初始化数组
    b := [5]int{1, 2, 3, 4, 5}
    fmt.Println("dcl:", b)

    // 5. 创建二维数组
    var twoD [2][3]int
    for i := 0; i < 2; i++ {
        for j := 0; j < 3; j++ {
            twoD[i][j] = i + j
        }
    }
    fmt.Println("2d: ", twoD)
}

运行上述代码将输出:

  • emp: [0 0 0 0 0]
  • set: [0 0 0 0 100]
  • get: 100
  • len: 5
  • dcl: [1 2 3 4 5]
  • 2d: [[0 1 2] [1 2 3]]

切片(Slices)的操作

切片是Go中最常用的数据结构之一,相比数组,它提供了更灵活的访问接口和动态大小特性。切片的类型由其包含的元素类型决定,而非长度。

package main
import "fmt"
func main() {
    // 1. 使用make创建长度为3的字符串切片
    s := make([]string, 3)
    fmt.Println("emp:", s)

    // 2. 设置和读取元素
    s[0] = "a"
    s[1] = "b"
    s[2] = "c"
    fmt.Println("set:", s)
    fmt.Println("get:", s[2])

    // 3. 获取长度
    fmt.Println("len:", len(s))

    // 4. 使用append添加元素
    s = append(s, "d")
    s = append(s, "e", "f")
    fmt.Println("apd:", s)

    // 5. 复制切片
    c := make([]string, len(s))
    copy(c, s)
    fmt.Println("cpy:", c)

    // 6. 切片截取操作 [low:high]
    l := s[2:5] // 获取下标2到4的元素
    fmt.Println("sl1:", l)
    l = s[:5]   // 从头截取到第5个元素前
    fmt.Println("sl2:", l)
    l = s[2:]   // 从第2个元素截取到最后
    fmt.Println("sl3:", l)

    // 7. 声明并初始化切片
    t := []string{"g", "h", "i"}
    fmt.Println("dcl:", t)

    // 8. 多维切片(内层切片长度可以不等)
    twoD := make([][]int, 3)
    for i := 0; i < 3; i++ {
        innerLen := i + 1
        twoD[i] = make([]int, innerLen)
        for j := 0; j < innerLen; j++ {
            twoD[i][j] = i + j
        }
    }
    fmt.Println("2d: ", twoD)
}

预期输出结果如下:

  • emp: [ ]
  • set: [a b c]
  • get: c
  • len: 3
  • apd: [a b c d e f]
  • cpy: [a b c d e f]
  • sl1: [c d e]
  • sl2: [a b c d e]
  • sl3: [c d e f]
  • dcl: [g h i]
  • 2d: [[0] [1 2] [2 3 4]]

映射(Maps)的增删查改

Map是Go语言的关联数据类型,类似于其他语言中的哈希表或字典。它通过键值对存储数据。

package main
import "fmt"
func main() {
    // 1. 使用make创建空Map
    m := make(map[string]int)

    // 2. 设置键值对
    m["k1"] = 7
    m["k2"] = 13
    fmt.Println("map:", m)

    // 3. 根据键获取值
    v1 := m["k1"]
    fmt.Println("v1: ", v1)

    // 4. 获取Map长度
    fmt.Println("len:", len(m))

    // 5. 删除键值对
    delete(m, "k2")
    fmt.Println("map:", m)

    // 6. 检查键是否存在(避免零值歧义)
    _, prs := m["k2"]
    fmt.Println("prs:", prs)

    // 7. 声明并初始化Map
    n := map[string]int{"foo": 1, "bar": 2}
    fmt.Println("map:", n)
}

执行上述代码的输出为:

  • map: map[k1:7 k2:13]
  • v1: 7
  • len: 2
  • map: map[k1:7]
  • prs: false
  • map: map[foo:1 bar:2]

Range 遍历操作

Range关键字可用于数组、切片、Map以及字符串等多种数据结构的枚举遍历。

package main
import "fmt"
func main() {
    // 1. 遍历切片求和
    nums := []int{2, 3, 4}
    sum := 0
    for _, num := range nums {
        sum += num
    }
    fmt.Println("sum:", sum)

    // 2. 遍历切片获取索引和值
    for i, num := range nums {
        if num == 3 {
            fmt.Println("index:", i)
        }
    }

    // 3. 遍历Map获取键和值
    kvs := map[string]string{"a": "apple", "b": "banana"}
    for k, v := range kvs {
        fmt.Printf("%s -> %s\n", k, v)
    }

    // 4. 遍历Unicode字符串
    for i, c := range "go" {
        fmt.Println(i, c)
    }
}

该部分代码的运行结果为:

  • sum: 9
  • index: 1
  • a -> apple
  • b -> banana
  • 0 103
  • 1 111

以上就是Go语言入门教程之Arrays、Slices、Maps、Range操作的详细内容,更多关于Go语言基础数据结构的知识资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。