go-数组-切片-字典

Posted osbreak

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了go-数组-切片-字典相关的知识,希望对你有一定的参考价值。

 

声明一个数组变量的同时为该变量赋值。
var numbers = [3]int{1, 2, 3}

另一种便捷方法, 类型字面量中省略代表其长度的数字
var numbers = [...]int{1, 2, 3}

 

对于数组来说,索引值既不能小于0也不能大于或等于数组值的长度。
索引值的最小有效值从0开始。

 

len是Go语言的内建函数的名称。
该函数用于获取字符串、数组、切片、字典或通道类型的值的长度。
var length = len(numbers)

 

如果我们只声明一个数组类型的变量而不为它赋值,那么该变量的值将会是指定长度的、其中各元素均为元素类型的零值(或称默认值)的数组值。
var numbers2 [5]int;  则它的值会是[5]int{0, 0, 0, 0, 0}

 

 切片

var numbers3 = [5]int{1, 2, 3, 4, 5}
var slice1 = numbers3[1:4]
切片表达式一般由字符串、数组或切片的值以及由方括号包裹且由英文冒号“:”分隔的两个正整数组成。
这两个正整数分别表示 [ 元素下界索引 : 元素上界索引 ]。
切片表达式numbers3[1:4]的求值结果为[]int{2, 3, 4}。

 

切片的更多操作方法
numbers3[1:4:4] 
这第三个正整数被称为容量上界索引。
它的意义在于可以把作为结果的切片值的容量设置得更小。

 

 

append会对切片值进行扩展并返回一个新的切片值。
slice1 = append(slice1, 6, 7)
slice1的值变为了[]int{2, 3, 4, 6, 7}

 

切片方法--复制
该操作的实施方法是调用copy函数。该函数接受两个类型相同的切片值作为参数,
并会把第二个参数值中的元素复制到第一个参数值中的相应位置(索引值相同)上。
 这种复制遵循最小复制原则,即:被复制的元素的个数总是等于长度较短的那个参数值的长度
var slice4 = []int{0, 0, 0, 0, 0, 0, 0}
copy(slice4, slice1)   
通过上述复制操作,slice4会变为[]int{2, 3, 4, 6, 7, 0, 0}

 

 字典
字典类型的字面量如下:
map[K]T    
其中,“K”意为键的类型,而“T”则代表元素(或称值)的类型
字典的键类型必须是可比较的,否则会引起错误。也就是说,它不能是切片、字典或函数类型。
map[int]string{1: "a", 2: "b", 3: "c"}

 

赋值给一个变量:
mm := map[int]string{1: "a", 2: "b", 3: "c"} 

 

 运用索引表达式取出字典中的值
b :
= mm[2]

 

对于字典值来说,如果其中不存在索引表达式欲取出的键值对, 那么就以它的值类型的空值(或称默认值)作为该索引表达式的求值结果

 

针对字典的索引表达式可以有两个求值结果。
第二个求值结果是bool类型的。
它用于表明字典值中是否存在指定的键值对。

 

从字典中删除键值对,调用内建函数delete
delete(mm, 4)   
无论mm中是否存在以4为键的键值对,delete都会“无声”地执行完毕。
有则删除,无则不做。

 

与切片类型相同,字典类型属于引用类型。它的零值即为nil。

 

 

 

 

 

 

 

 





以上是关于go-数组-切片-字典的主要内容,如果未能解决你的问题,请参考以下文章

go 数组 切片 字典 结构体

Go语言切片

Go切片实现

Golang basic_leaming2 语言容器

Golang basic_leaming2 语言容器

Golang 数组 切片 字典 基本知识点