数组,切片,map

数组

初始化:

数组: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.安装 https://studygolang.com/dl 2.使用vscode编辑器安装go插件 3.go语...
    go含羞草阅读 1,598评论 0 6
  • 第四天 数组【悟空教程】 第04天 Java基础 第1章数组 1.1数组概念 软件的基本功能是处理数据,而在处理数...
    Java帮帮阅读 1,614评论 0 9
  • SwiftDay011.MySwiftimport UIKitprintln("Hello Swift!")var...
    smile丽语阅读 3,865评论 0 6
  • 狮王镇户保平安, 屹立风雨百余载。 遥想当年祖先意, 添丁添福出能人。 承蒙祖先福浩荡, 一代更比一代强。 开基始...
    老兵_诗梦人生阅读 341评论 0 0
  • 扎西朗姆多多 转载人:陈诗瑶 一如当年 停在半天的云 和一张脸 骤然变红 一如当天 凝在江心的水 和一双眼 渐渐变...
    半栊阅读 470评论 0 0