• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

go语言的array、slice和map

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

数组作为语言中必不可少的一个存在,自然要关注,而slice(切片)是go语言对数组的抽象。

array

在go中,我们这样声明一个数组:
var arr [10]int
赋值:
arr[0]=1

数组大小是类型的一部分。由于不同的大小是不同的类型,因此不能改变大小

数组同样是值类型的: 将一个数组赋值给另一个数组,会复制所有的元素。尤其是当向函数内传递一个数组的时候,它会获得一个数组的副本,而不是数组的指针。

当然,作为语法超赞的go,当然还有更简洁的数组声明,和赋值语句,比如:
a :=[2]int{1,2}

不确定数组长度的情况下可以:

a :=[...]int{1,2}, go会自动计数。(注意三点...是不能省略的)。

slice

slice 与 array 接近,但是在新的元素加入的时候可以增加长度。
slice 总是指向底层的
一个 array。
slice 是一个指向 array 的指针,这是其与 array 不同的地方;slice 是引用
类型,这意味着当赋值某个 slice 到另外一个变量,两个引用会指向同一个 array。

slice声明语法:
var slice1 []type = make([]type, len)

也可以简写为

slice1 := make([]type, len)

实例展示:

// array[n:m] 从 array 创建了一个 slice,具有元素 n 到 m-1
a := [...]i n t {1, 2, 3, 4, 5} .0
s1 := a[2:4] .1
s2 := a[1:5] .2
s3 := a[:] .3
s4 := a[:4] .4
s5 := s2[:] .5
.0 定义一个 5 个元素的 array,序号从 0 到 4;
.1 从序号 2 至 3 创建 slice,它包含元素 3, 4;
.2 从序号 1 至 4 创建,它包含元素 2, 3, 4, 5;
.3 用 array 中的所有元素创建 slice,这是 a[0:len(a)] 的简化写法;
.4 从序号 0 至 3 创建,这是 a[0:4] 的简化写法,得到 1, 2, 3, 4;
.5 从 slice s2 创建 slice,注意 s5 仍然指向 array a。

在 Go 中有 map 类型。map 可以认为是一个用字符串做索引的数
组(在其最简单的形式下).
Map 最重要的一点是通过 key 来快速检索数据,key 类似于索引,指向数据的值。
Map 是无序的,我们无法决定它的返回顺序,这是因为 Map 是使用 hash 表来实现的。

  • map定义方法:
    map [<from type>]<to type>

比如,time:= map[string]int{
"year":2019,
"month":12,
"day":2,
}

也可以用,make(参照内建函数)的形式:
time := make(map[string]int)

  • 打印年份:
fmt.Printf("%d", time["year"])
  • map新增元素:
    time["hour"] = 22

  • map重写元素:
    time["hour"] = 23

  • 检查这个元素是否存在:
    value, present = monthdays["Jan"] 如果存在,present 则有值 true

或者

v, ok := monthdays["Jan"]

array、slice、map这三者,常常与range, copy, append等内建函数联合使用(多记)。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
go语言从例子开始之Example36.互斥锁发布时间:2022-07-10
下一篇:
【转载】SVN-无法查看log,提示Want to go offline发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap