• Golang 开发实战day03 - Arrays & Slices


    Golang 教程03 - Arrays,Slices

    Go语言中的数组和切片都是用于存储数据的类型,但它们之间存在一些重要的区别。了解这些区别对于有效地使用它们至关重要。

    1. Arrays 数组

    1.1 定义

    数组是一种固定大小的数据结构,用于存储相同类型的值。

    1.2 语法

    Go
    // 声明一个长度为 n 的数组,元素类型为 type
    var array [n]type
    
    // 初始化数组
    array := [n]type{value1, value2, ..., valueN}
    
    // 访问数组元素
    array[i] // 访问第 i 个元素
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    1.3 示例

    // 声明一个长度为 3 的 int 型数组并且初始化数组
    var ages [3]int = [3]int{20, 25, 30}
    
    // 声名一个长度为4的string型数组并初始化
    names := [4]string{"小叮当", "大雄", "静香", "小夫"}
    
    // 将“大雄”替换成“胖虎”
    names[1] = "胖虎"
    
    fmt.Println(ages, len(ages))
    fmt.Println(names, len(names))
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    Output:

    在这里插入图片描述

    1.4 特点

    • 数组的大小是固定的,在声明时必须指定。
    • 数组元素是连续存储在内存中的。
    • 数组可以直接赋值给另一个数组,但前提是两个数组的长度和元素类型相同。

    2. Slices 切片

    2.1 定义

    切片是一种引用类型,它表示一段连续的数组元素。

    2.2 语法

    Go
    // 声明一个切片,元素类型为 type
    var slice []type
    
    // 初始化切片
    slice := make([]type, len, cap) // 创建一个长度为 len、容量为 cap 的切片
    slice := array[start:end] // 从数组 array 中截取一段切片,从 start 开始,到 end 结束 (不包括 end)
    
    // 访问切片元素
    slice[i] // 访问第 i 个元素
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    2.3 示例

    // 创建一个scores的分数数组
    var scores = []int{100, 25, 90, 88}
    
    // 获取1号位置元素
    scores[1] = 15
    
    // 增加数组元素
    scores = append(scores, 85)
    
    rangeOne := names[1:3]
    rangeTwo := names[2:]
    rangeThree := names[:3]
    
    // 打印切片元素
    fmt.Println(scores, len(scores))
    fmt.Println(scores, len(scores))
    fmt.Println(rangeOne, rangeTwo, rangeThree)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    Output:

    在这里插入图片描述

    2.4 特点

    • 切片的长度是可变的,可以使用 len() 函数获取。
    • 切片的容量是指切片底层数组的容量,可以使用 cap() 函数获取。
    • 切片可以通过 append() 函数追加元素,也可以通过 copy() 函数复制切片。

    3. 对比

    特性数组切片
    大小固定可变
    容量固定可变
    存储连续存储引用类型
    初始化使用 []type{value1, value2, …, valueN}使用 make([]type, len, cap) 或 array[start:end]
    赋值直接赋值需使用 copy() 函数
    访问元素使用 array[i]使用 slice[i]

    4. 总结

    数组和切片都是 Go 语言中重要的数据结构。数组是一种固定大小的数据结构,用于存储相同类型的值。切片是一种引用类型,它表示一段连续的数组元素。了解数组和切片的区别,可以有效地使用它们来存储和处理数据。

    在这里插入图片描述

    感谢观看,下一期内容标准library

  • 相关阅读:
    云上办公兴起,华为云桌面Workspace更靠谱
    《软件测试》实验四:移动应用自动化测试(安卓自动化测试)
    在标准的C++ 语法中,请问有 MyCppClass*& mycppclass 这样的变量定义方式吗?
    目标检测算法改进系列之Neck添加渐近特征金字塔网络(AFPN模块)
    Java多线程_多线程的补充
    ES6模块化练习import,export
    在 React项目中应用TypeScript
    Unity-Input System新输入系统插件学习
    redo log 和 binlog 的一些总结
    Squid代理服务器应用
  • 原文地址:https://blog.csdn.net/u014739136/article/details/136629650