Go语言探索 - 10(原创)

  1. 云栖社区>
  2. 博客>
  3. 正文

Go语言探索 - 10(原创)

小猪看流星 2018-07-10 15:58:00 浏览357
展开阅读全文

Go语言基础系列博客用到的所有示例代码

上一篇文章 主要学习了Go语言的结构体以及结构体指针,本篇文章主要学习Go语言的切片以及Map。

Go语言数组的长度不可改变,但是这在一些特定场景中就不太适用,比如我们现在有一款电商商品,想统计用户的消费记录(每个用户的消费记录可能不一样,有的一天几十单有的一个季度就几单)Go语言团队基于此中提供了相较于一种灵活,功能强悍的内置类型切片("也称动态数组",这个可以理解为Java的List)。

与数组相比切片的长度是不固定的,可以追加元素,在追加时可能使切片的容量增大。

如何定义切片?

var 切片变量名 [ ] 数据类型 = make([ ] 数据类型, len)

也可以简写为 切片变量名 := make([ ] 数据类型, len)

或者直接:切片变量名  := [ ] 数据类型 { 1,2,3 }

img_c94939a0a5ba54548cdbe755a9b66da2.png
初始化切片

我们可以通过切片的索引获取新的切片:


img_f763104eb1777a0ef246756ecde023bc.png

其中 红色矩形内的代码 是通过我们定义好的切片,然后使用 s[0:3]  获取新的切片。这里的0代表的是startIndex 也就是切片的开始索引;3代表的是endIndex,也就是结束索引

len() 和 cap() 函数

切片是可索引的,可以通过 len() 方法获取长度。

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

img_2e3eb7f1887a8d074d8e1eeb6f144ae8.png

append() 和 copy() 函数

既然切片的长度是不固定的,那么它肯定有添加元素的方法。Go语言中,切片添加元素的方法是使用 append( )。

另外,切片也是允许拷贝的,拷贝切片使用的方法是copy( )。

下面的代码,首先初始化一个空切片,然后对切片的元素进行添加 然后copy到新的切片,最后打印切片属性值。

img_b456f41ea14d70177152a6423a2cdc03.png

如何遍历切片?

img_9d6c22a0c14238c1ace3e2e56aad57d8.png
遍历切片

简单介绍完了切片,下面学习GO语言的Map(类似于Java中的Map,一个key对应一个value)

Map 是一种无序的键值对集合。Map最重要的一点是通过 key 来快速检索数据,key 类似于索引,指向数据的值。但是,Map 是无序的,我们无法决定它的返回顺序,这是因为 Map 是使用 hash 表来实现的。

如何定义 Map?以下两种方式都可以

可以使用内建函数 make :var map_变量名 map[key_数据类型]value数据类型

也可以使用 map 关键字来定义 :  变量名 := make(map[key_数据类型]value数据类型)

以下代码是Map初始化的两种写法以及向Map添加元素,根据key删除元素

img_ce9c608febc03c261a8efe27cfa4cc40.png
Map

如何遍历Map?遍历Map可以使用range关键字 进行遍历 代码如下:

img_80eceb68b99718d2347008eb85b7ee2d.png
遍历Map

本篇文章主要学习的是Go语言的切片和Map,切片本质就是一个长度不确定的动态数组,类似于Java的List;而Map也类似于Java中的Map,属于key - value 对应的结构模式。计算机语言的互通性体现在方方面面,一些思想都是互通与传承的。

如果这篇文章对你有帮助,希望各位看官留下宝贵的star,谢谢。

Ps:著作权归作者所有,转载请注明作者, 商业转载请联系作者获得授权,非商业转载请注明出处(开头或结尾请添加转载出处,添加原文url地址),文章请勿滥用,也希望大家尊重笔者的劳动成果

网友评论

登录后评论
0/500
评论
小猪看流星
+ 关注