Go语言基础|青训营笔记

70 阅读1分钟

Go语言基础|青训营笔记

这是我参与「第五届青训营 」伴学笔记创作活动的第 19天

在大项目即将开始之际,复习之前的学习的内容。Go语言的语法与C++、Python有一定相似性,所以特别记住了一些比较重点的。

map

在其他语言里也可以找到它的身影,可以叫做“字典”、“哈希”

map里需要两个类型,一个是key,一个是value

创建map一般有两种方法:

(1)可以先用make创建一个空的map,然后再设置其值

(2)直接定义一个map和其值

有创建当然也要有删除,可以用delete删除键值对

下面是演示的代码:

func Map() {
    m := make(map[string]int)
    m["one"] = 1
    m["two"] = 2
    fmt.Println(m)
    fmt.Println(len(m))
    fmt.Println(m["one"])
    fmt.Println(m["unknow"])
​
    r, ok := m["unknow"]
    fmt.Println(r, ok)
    delete(m, "one")
​
    m2 := map[string]int{"one": 1, "two": 2}
    var m3 = map[string]int{"one": 1, "two": 2}
    fmt.Println(m2, m3)
}

输出结果为:

map结果.jpg

值得一提的是,go语言里面的map是完全无序的,遍历时是完全随机,而不是按加入顺序或者字母顺序

range

对于一个slice或者上面提到的map,我们可以用range对其快速遍历,使代码更加简洁。对于数组,range会返回两个值,一个是索引,一个是对应索引位置的值;如果不需要索引时,可以用下划线来忽略

下面是实验的代码:

func Range() {
    nums := []int{1, 2, 3, 4}
    sum := 0
    for i, num := range nums {
        sum += num
        if num == 2 {
            fmt.Println("index:", i, "num:", num)
        }
    }
    fmt.Println(sum)
​
    m := map[string]string{"a": "A", "b": "B"}
    for k, v := range m {
        fmt.Println(k, v)
    }
​
    for k := range m {
        fmt.Println("key", k)
    }
}

运行结果如下:

range结果.jpg

相比于传统的遍历,用range进行遍历会更方便,代码也会更简洁。