Go语言程序设计:集合类型

kamendula · · 1449 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

Go语言程序设计:集合类型

Go 集合


本章主要介绍了以下类型:

值,指针以及引用的类型。除此之外,还包括了Go语言的一些内置类型:数组、切片和映射。

通常情况下,变量持有相应的值。值在传递给函数或者方法时会被复制一次,这对布尔类型或者数值类型来说非常廉价。按值传递字符串也很廉价,因为字符串不可变。但是,如果修改一个传入的字符串的话,代价可能会很大。

在Go语言中,数组是按值传递的。幸运的是,我们不常用数组,而是用切片。

对于指针来说,用法跟C是类似的。既有&取地址操作符,也有*解引用操作符。其基本的用法与C指针类似。在生成一个结构体的实例时,我们可以用new(Type)来生成这个实例的指针,或者用&type{}的方法来生成指针。其中后者还可以进行初始化。

除了这两者之外,还有引用类型。引用类型的传递也很廉价,语法跟值一样。

映射和切片都是引用,因此,我们对其的任何修改都是可见的。

除了映射和切片之外,通道、函数和方法都是引用类型。引用没有什么特殊的语法,它跟值的使用是一样的。

数组和切片

Go语言的数组是定长的,且类型相同。创建的语法如下:

[length]type
[N]type{value1, ...., valueN}
[...]type{value1, ...,valueN}

三种情况中,有一点很重要:数组的长度是确定的,需要在[]中确定下来。要么你一开始确定,要么根据数组内容可以推断出来。数组的长度可以用len函数来获取。

一般来说,我们可以用数组来获取切片。创建切片的话,通过以下方式:

make([]type, length, capacity)
make([]type, length)
[]type{}
[]type{value1,..., valueN}

在[]不需要确定长度,切片的长度是可变的。内置函数make可以用来创建切片,映射和通道。也就是说,make可以用来创建引用类型中的大部分。如果不用make,用{}就可以了。

索引、分割切片:与python是一样的。

遍历切片:
分为for i := range slice 以及 for _, value := range slice
第一个值都是索引。

修改切片:可以使用append函数来添加新的切片,copy可以用来复制。

排序和搜索切片:多个函数

映射

Go语言中的映射类似于python中的dict,用来保存键值对。

映射的创建方式跟切片类似,也是可以通过make来创建:

make(map[keytype]valuetype, initialcap)
make(map[keytype]valuetype)
map[keytype]valuetype{}
map[keytype]valuetype{key1:value1, key2:value2}

:要么通过make来创建,要么通过{}

其他的使用方法跟python类似。


有疑问加站长微信联系(非本文作者)

本文来自:CSDN博客

感谢作者:kamendula

查看原文:Go语言程序设计:集合类型

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1449 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传