Go语言容器(container)

1年前 (2024-04-27)
变量在一定程度上能满足函数及代码要求。如果编写一些复杂算法、结构和逻辑,就需要更复杂的类型来实现。这类复杂类型一般情况下具有各种形式的存储和处理数据的功能,将它们称为“容器(container)”。

在很多语言里,容器是以标准库的方式提供,你可以随时查看这些标准库的代码,了解如何创建,删除,维护内存。

本章将以实用为目的,详细介绍数组、切片、映射,以及列表的增加、删除、修改和遍历的使用方法。本章既可以作为教程,也可以作为字典,以方便开发者日常的查询和应用。

其它语言中的容器

  • C语言没有提供容器封装,开发者需要自己根据性能需求进行封装,或者使用第三方提供的容器。

  • C++ 语言的容器通过标准库提供,如 vector 对应数组,list 对应双链表,map 对应映射等。

  • C# 语言通过 .NET 框架提供,如 List 对应数组,LinkedList 对应双链表,Dictionary 对应映射。

  • Lua 语言的 table 实现了数组和映射的功能,Lua 语言默认没有双链表支持。


本章内容:

1. Go语言数组详解

2. Go语言多维数组简述

3. Go语言切片详解

4. Go语言append()为切片添加元素

5. Go语言copy():切片(切片拷贝)

6. Go语言从切片中删除元素

7. Go语言range关键字:循环迭代切片

8. Go语言多维切片简述

9. Go语言map(Go语言映射)

10. Go语言遍历map(访问map中的每一个键值对)

11. Go语言map元素的删除和清空

12. Go语言map的多键索引——多个数值条件可以同时查询

13. Go语言sync.Map(在并发环境中使用的map)

14. Go语言list(列表)

15. Go语言nil:空值/零值

16. Go语言make和new关键字的区别及实现原理