Go语言学习02-常用集合
Go语言学习02-常用集合
条件与循环
循环
与其他主要编程语言的差异Go语言仅支持循环关键字 for
for j := 7; j <= 9; j++
代码示例
while条件循环 while (n < 5)1 | n := 0 |
1 | n := 0 |
if条件
1 | if condition { |
condition 表达式结果必须为布尔值
支持变量赋值:
1
2
3if var declaration; condition {
// code to be executed if conditon is true
}
switch条件
1 | switch os := runtime.GOOS; os { |
- 条件表达式不限制为常量或者整数;
- 单个case中, 可以出现多个结果选项, 使用逗号分隔;
- 与C语言等规则相反, Go语言不需要用break来明确退出一个case;
- 可以不设定 switch 之后的条件表达式, 在此种情况下, 整个switch结构与多个if…else…的逻辑作用等同
数组与切片
数组的声明
1 | var a [3]int //声明并初始化为默认零值 |
1 | func TestTravelArray(t *testing.T) { |
数组截取
1 | a[开始索引(包含),结束索引(不包含)] |
切片
内部结构
切片声明
1 | var s0 []int |
切片共享存储结构
数组 vs. 切片
- 数组容量不可伸缩
- 相同维数, 相同长度的数组可以进行比较, 每一个元素都相同, 这两个数组会被认为相同
Map声明、元素访问及遍历
Map声明
1 | m := map[string]int{"one":1, "two":2, "three":3} |
Map元素的访问
与其他主要编程语言的差异在访问的Key不存在时, 仍会返回零值, 不能通过返回nil来判断元素是否存在
Map遍历
1 | m := map[string]int{"one":1, "two":2, "three":3} |
实现Set
Go 的内置集合中没有 Set 实现, 可以map[type]bool
元素的唯一性
基本操作
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19func TestMapForSet(t *testing.T) {
mySet := map[int]bool{}
mySet[1] = true
n := 3
if mySet[n] {
t.Logf("%d is existing", n)
} else {
t.Logf("%d is not existing", n)
}
mySet[3] = true
t.Log(len(mySet))
delete(mySet, 1)
n = 1
if mySet[n] {
t.Logf("%d is existing", n)
} else {
t.Logf("%d is not existing", n)
}
}- 添加元素
- 判断元素是否存在
- 删除元素
- 元素个数
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 技术匝记簿!
评论