Go 语言基础(4)| 青训营笔记

60 阅读2分钟

这是我参加字节后端训练营的笔记,承接上文,这一篇继续写写Go语言的基础最基础的语法,既作为自己的笔记,又可以作为文档后面需要时进行查询和阅读。

Range 遍历

range用于迭代各种各样的数据结构。让我们用例子来学习range的用法。

package main

import "fmt"

func main() {

    nums := []int{2, 3, 4}
    sum := 0
    for _, num := range nums {
        sum += num
    }
    fmt.Println("sum:", sum)

    for i, num := range nums {
        if num == 3 {
            fmt.Println("index:", i)
        }
    }

    kvs := map[string]string{"a": "apple", "b": "banana"}
    for k, v := range kvs {
        fmt.Printf("%s -> %s\n", k, v)
    }

    for k := range kvs {
        fmt.Println("key:", k)
    }

    for i, c := range "go" {
        fmt.Println(i, c)
    }
}

输出为:

sum: 9
index: 1
a -> apple
b -> banana
key: a
key: b
0 103
1 111

第一个例子里我们使用了range来对slice中的元素进行求和,同时这种方法也可以被用来对数组进行初始化和赋值。range在数组以及slice里中提供对每项的索引和值的访问,但大部分时候我们不需要索引,所以可以像之前一样直接使用空白标识符_将其忽略。同时,range既可以在map中迭代键值对,也可以只遍历map的键。range进行迭代时,第一个返回值是字符的起始字节位置,然后第二个是字符本身。

函数

函数是许多编程语言的核心,当然也包括Go语言,这里我们还是通过一些不同的例子来进行学习函数的使用与用法。

package main

import "fmt"

func plus(a int, b int) int {

    return a + b
}

func plusPlus(a, b, c int) int {
    return a + b + c
}

func main() {

    res := plus(1, 2)
    fmt.Println("1+2 =", res)

    res = plusPlus(1, 2, 3)
    fmt.Println("1+2+3 =", res)
}

输出为

1+2 = 3
1+2+3 = 6

第一个函数我们让它接受了两个int并且以int的类型返回它们的和,值得注意的是,在go语言里,我们必须明确声明return,因为它是不会自动return最后一个表达式的值的。在多个连续的参数为同样类型时,我们可以只声明最后一个参数的类型,不用再对之前相同类型的参数进行声明了。调用的时候我们会通过函数名对函数进行调用。

多返回值

Go语言支持多返回值,这个特性我们在今后的学习中经常用到,例如用来同时返回一个函数的结果和错误信息。

package main

import "fmt"

func vals() (int, int) {
    return 3, 7
}

func main() {

    a, b := vals()
    fmt.Println(a)
    fmt.Println(b)

    _, c := vals()
    fmt.Println(c)
}

输出为

3
7
7

首先我们利用(int, int)对函数进行了定义,这表示着这个函数会返回两个int类型的值,然后我们通过多赋值操作来使用这两个不同的返回值,当然,如果你只需要其中一个值,可以使用空白标识符_

参考

Go by Example