"Golang学习笔记(四):array、slice、map" 在Golang中,数组、切片和映射(map)是三种非常重要的数据结构,它们各自有着不同的特性和用途。 一、Array(数组) 1. **声明与赋值**: 数组是一种固定大小的序列,其长度在声明时就必须指定。例如: ```go var a [5]int // 定义一个长度为5的整型数组,初始值为0 var b int = [5]int{1, 2, 3, 4, 5} // 声明并初始化 a := [3]int{1, 2, 3} // 使用 := 简化声明 ``` 对于多维数组,可以这样定义: ```go var doubleArray [2][4]int{{1, 2, 3, 4}, {5, 6, 7, 8}} // 2x4 的二维数组 ``` 数组的长度是其类型的一部分,不可改变。 2. **元素访问**: - 使用索引访问,如 `array[i]`。 - 使用 `for` 循环遍历: ```go for i := 0; i < len(array); i++ { fmt.Println(i, array[i]) } ``` - 或使用 `range` 遍历: ```go for i, v := range array { fmt.Println(i, v) } ``` 3. **数组与指针**: 数组赋值是值的复制,不是引用。如果需要传递数组的引用,应使用切片(slice)。 二、Slice(切片) 1. **创建与初始化**: 切片是对数组的引用,可以动态增长。创建方式: ```go s := make([]int, 3) // 创建一个长度为3的空切片 s = []int{1, 2, 3} // 初始化切片 s := a[1:3] // 从数组 a 中创建切片 ``` 切片的长度可以通过 `len(s)` 获得,可以通过 `s = append(s, val)` 添加元素。 2. **操作与特性**: - 切片可以动态扩展,而数组的长度是固定的。 - 切片可以共享同一个底层数组,因此对切片的修改会影响到原始数组。 - 切片可以通过索引或 `range` 遍历元素。 三、Map(映射) 1. **声明与初始化**: 映射用于存储键值对,声明方式: ```go m := make(map[string]int) // 声明一个字符串到整型的映射 m := map[string]int{"key1": 1, "key2": 2} // 初始化映射 ``` 映射的键和值可以是任何可比较的类型。 2. **操作与访问**: - 使用 `m[key]` 获取或设置映射中的值。如果键不存在,`m[key]` 返回零值。 - 使用 `delete(m, key)` 删除键值对。 - 使用 `len(m)` 获取映射中键值对的数量。 - 遍历映射需使用 `for` 循环,因为映射无顺序: ```go for key, value := range m { fmt.Println(key, value) } ``` 在实际编程中,根据需要选择使用数组、切片或映射。数组适用于固定大小且不需要动态调整的数据,切片则提供了灵活的数组操作,而映射则适合关联数据的存储。理解它们之间的差异和用法对于编写高效的Go程序至关重要。
下载后可阅读完整内容,剩余3页未读,立即下载
- 粉丝: 8
- 资源: 939
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- C++多态实现机制详解:虚函数与早期绑定
- Java多线程与异常处理详解
- 校园导游系统:无向图实现最短路径探索
- SQL2005彻底删除指南:避免重装失败
- GTD时间管理法:提升效率与组织生活的关键
- Python进制转换全攻略:从10进制到16进制
- 商丘物流业区位优势探究:发展战略与机遇
- C语言实训:简单计算器程序设计
- Oracle SQL命令大全:用户管理、权限操作与查询
- Struts2配置详解与示例
- C#编程规范与最佳实践
- C语言面试常见问题解析
- 超声波测距技术详解:电路与程序设计
- 反激开关电源设计:UC3844与TL431优化稳压
- Cisco路由器配置全攻略
- SQLServer 2005 CTE递归教程:创建员工层级结构