Go语言基础 | 青训营笔记

385 阅读2分钟

这是我参与「第五届青训营 -后端场」笔记创作活动的的第1篇笔记。 今天主要学习了Go语言的基础语法及应用,下面是我今天的学习总结:

1.变量的定义

在Go语言中,变量的定义包括以下两种方式:

package main

func main() {
    // 常规定义方式
    var temp int = 10
    // 自动推导式,可以根据等号后面的内容,推导出变量的类型
    temp := 10
}

2.匿名变量

在Go语言中存在匿名变量,在定义变量时,用 '_' 表示:

package main

import "fmt"

func test() (int, int) {
   return 10, 30
}

func main() {
   // _ 匿名变量
   // 此时test()函数返回 10和20。但是通过下面方式定义后,就能单独接收其中一个返回值
   a, _ := test()
   fmt.Println(a)
}

0094bf2665549c7645c42866fb5569a.png

3.函数

下面是Go语言中,函数的形式有许多种:

package main

import "fmt"

func main() {
   printInfo()
   myPrint("hello world")
   fmt.Println(add(10, 20))
   println(swap("芝士A", "芝士B"))
}

// 无参无返回值函数
func printInfo() {
   fmt.Println("芝士printInfo")
}

// 有一个参数的函数
func myPrint(msg string) {
   fmt.Println(msg)
}

// 有两个参数的函数
// 有一个返回值的函数
func add(a, b int) int {
   return a + b
}

// 有多个返回值的函数
func swap(x, y string) (string, string) {
   return y, x
}

还有一个特殊的——匿名函数。匿名函数可以在定义时直接用或者定义后赋值给一个变量,再通过变量调用匿名函数:

package main

import "fmt"

func main(){

    fun1 := func(x, y int) int {
        return x+y
    } (10, 20)
    fmt.Println(fun1)
    
    // or
    
    fun2 := func(x, y int) int {
        return x+y
    }
    fmt.Println(fun2(10, 20)
}

在Go中,我们也可以把函数作为参数传递给另一个函数:

package main

import "fmt"

func main() {

   r2 := oper(3, 4, add)
   fmt.Println(r2)

   r3 := oper(5, 6, sub)
   fmt.Println(r3)

}

func oper(a, b int, fun func(int, int) int) int {
   r := fun(a, b)
   return r
}

func add(a, b int) int {
   return a + b
}

func sub(a, b int) int {
   return a - b
}

af31e7ec5102b8872c0665a1146b639.png

在Go的函数中,我们可以传入一个可变参数,可变参数就是一个占位符,可以将 1 个或者多个参数赋值给这个占位符,这样不管实际参数的数量是多少,都能交给可变参数来处理。(注:在一个函数中,只能存在一个可变参数

package main

import "fmt"

func main() {
   fmt.Println(getSum(1, 2, 3, 4, 5, 6, 7, 8, 9, 10))
}

func getSum(nums ...int) int {
   sum := 0
   for i := 0; i < len(nums); i++ {
      sum += nums[i]
   }
    return sum

691d00a219c6c4aee93f82ef6031360.png

以上就是本人今天的一些学习总结。欢迎大家批评指正。