博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Golang数据结构
阅读量:6115 次
发布时间:2019-06-21

本文共 1267 字,大约阅读时间需要 4 分钟。

hot3.png

常见的数据结构有数组、切片、Map、结构体。

一、数组

    数组是具有相同唯一类型的一组已编号且长度固定的数据项序列,这种类型可以是任意的原始类型。例如:整形、字符串或者自定义类型。   

    声明数组需要指定元素类型及元素个数,语法格式:var variable_name [size] variable_type

 

二、切片

    切片是对数组的抽象。Go 数组的长度不可改变,在特定场景中这样的集合就不太适用,Go中提供了一种灵活,功能强悍的内置类型切片("动态数组"),与数组相比切片的长度是不固定的,可以追加元素,在追加时可能使切片的容量增大。

    切片声明不需要指定长度,格式为:var identifier []type  

        或使用make()函数来创建切片:var slice1 []type = make([]type, len)

        也可以简写为 slice1 := make([]type, len)

        也可以指定容量,其中capacity为可选参数:make([]T, length, capacity)    这里 len 是数组的长度并且也是切片的初始长度。

 

    len() 和 cap() 函数

        切片是可索引的,并且可以由 len() 方法获取长度。

        切片提供了计算容量的方法 cap() 可以测量切片最长可以达到多少。

        一个切片在未初始化之前默认为 nil,长度为 0

 

三、结构体

    结构体是由一系列具有相同类型或不同类型的数据构成的数据集合。数组可以存储同一类型的数据,但在结构体中我们可以为不同项定义不同的数据类型。

    结构体定义需要使用 type 和 struct 语句。struct 语句定义一个新的数据类型,结构体有中有一个或多个成员。type 语句设定了结构体的名称。结构体的格式如下:

            type struct_variable_type struct {

                member definition;

                member definition;

                ...

                member definition;

            }     

 

四、Map类型

    Map 是一种无序的键值对的集合。Map 最重要的一点是通过 key 来快速检索数据,key 类似于索引,指向数据的值。

    Map 是一种集合,所以我们可以像迭代数组和切片那样迭代它。不过,Map 是无序的,我们无法决定它的返回顺序,这是因为 Map 是使用 hash 表来实现的。

    可以使用内建函数 make 也可以使用 map 关键字来定义 Map:

        /* 声明变量,默认 map 是 nil */

        var map_variable map[key_data_type]value_data_type

        /* 使用 make 函数 */

        map_variable := make(map[key_data_type]value_data_type)

 

        如果不初始化 map,那么就会创建一个 nil map。nil map 不能用来存放键值对

 

 

 

转载于:https://my.oschina.net/u/3625745/blog/3022729

你可能感兴趣的文章
redis 单点部署
查看>>
Java中需要编码的场景
查看>>
PHP生成word的三种方式
查看>>
设计模式(九)——桥接模式
查看>>
xen 创建本地存储
查看>>
TCP三次握手/四次挥手 | NAT介绍 |OSI与TCP/IP模型
查看>>
jQuery UI dialog 的使用
查看>>
ABP实战--集成Ladp/AD认证
查看>>
存储过程
查看>>
phpcms v9栏目列表调用每一篇文章内容方法
查看>>
python 自定义信号处理器
查看>>
我只是轻奢 40万内入门豪车最高让利7万!-搜狐汽车
查看>>
曲演杂坛--隐式转换
查看>>
远程桌面连接技巧--与主机拷贝文本及拷贝文件(转)
查看>>
MVC中下拉框显示枚举项
查看>>
Linux基础精华
查看>>
SqlServer2008第一次安装后连接问题
查看>>
cocos2d-x Schedule详解
查看>>
sdut 2163:Identifiers(第二届山东省省赛原题,水题)
查看>>
C++ 容器:顺序性容器、关联式容器和容器适配器
查看>>