数组,切片,map

作者: lixin_karl | 来源:发表于2018-06-20 20:34 被阅读0次

数组

初始化:

数组:var arr [len]type

实例 var arr [4]int32 默认为零值。

数组的长度也是数组类型的一部分,所以[4]int32 与 [2]int32不是同一类型的数组。

GO语言中的数组是一种值类型,所以可以通过 new() 来创建: var arr1 = new([5]int),arr1是指针类型。

由于数组传递给函数的形参会导致数组的拷贝。

数组会拷贝 地址改变

由此可见,如果形参是特别大的数组会造成内存的消耗,有如下两种方案可以避免这种情况:1. 指针传递。2. 切片传递。

切片

切片是对数组一个连续片段的引用。

切片 var slice []type

实例 var arr []int32

切片的初始化 arr := make([]int,3) or make([]int,3,10),其中3是切片的长度,10是切片的容量。

切片的添加

arr = append(arr,2)或者 arr = append(arr,arr1...)

复制

copy(dest,src)

切片的操作

Map

map: var m map[keyType]valueType

实例:var m map[int]string

初始化 m := make(map[int]string) map是引用类型所以用make分配内存。

不要使用 new,永远用 make 来构造 map。如果你错误的使用 new() 分配了一个引用对象,你会获得一个空引用的指针,相当于声明了一个未初始化的变量并且取了它的地址:之后操作会出错。

new map 使用出错

map操作

取值

            val, ok := m[key]

删除

            delete(m,key)

map 操作 输出结果

排序

map 默认是无序的,如果你要有序的输出,只能将key丢到一个切片中,然后对切片排序,再输出val。

相关文章

  • 内建容器

    内建容器的知识点 1、数组 2、切片概念 3、切片操作 4、Map 5、Map例题 6、字...

  • 数组,切片,map

    数组 初始化: 数组:var arr [len]type 实例 var arr [4]int32 默认为零值。 数...

  • Go基础 - 4 数组,切片,集合,通道

    数组 array 切片 slice 集合 map Map的迭代顺序是随机的 通道 channel 相关阅读 学习笔记

  • Golang数组、切片、map

    数组是指一系列同一类型的数据集合。数组中包含的每个数据被称为数组元素,数组中元素的个数,称为数组的长度。 数组的创...

  • 【二】数组、切片、map

    要清醒,理智,稳重,优秀 一、内置函数   append :追加元素到slice里,返回修改后的slice  cl...

  • 2 Go 常用容器类型

    内容概要 数组(Array) 切片(Slice) string & []byte map 实现原理 sync.Ma...

  • 21. range用法

    range是一个内置函数。可以遍历数组、切片slice、字典map。当遍历数组和切片的时候,返回的是索引和元素。当...

  • Go语言实战(三) - 内置容器

    本节我们来学习数组,切片,Map和字符串。在Go语言中,我们一般不直接使用数组,而是使用切片来管理线性表结构,它的...

  • Go语言学习笔记10.复合类型-指针

    复合类型包括: pointer 指针array 数组slice 切片map 字典struct 结构体 指针 和C...

  • Golang学习笔记之1:数组、切片、map内存原理

    Golang 数组、切片、map使用方法、内存原理 1数组: 在内存中开辟一块连续的存储地址 1.1特点: 有序、...

网友评论

    本文标题:数组,切片,map

    本文链接:https://www.haomeiwen.com/subject/ybtfyftx.html