Go 语言入门指南 | 豆包MarsCode AI刷题

7 阅读3分钟
  • go基础语法

    1. 变量

      类型推导:有时我们会将变量的类型省略,这个时候编译器会根据等号右边的值来推导变量的类型完成初始化

      短变量声明:在函数内部,可以使用更简略的:=方式声明并初始化变量m := 10

      匿名变量:在使用多重赋值时,如果想要忽略某个值,可以使用匿名变量(anonymous variable),使用一个下划线_表示。匿名变量不占用命名空间,不会分配内存,所以匿名变量之间不存在重复声明。

      注意事项:

      (1) 函数外的每个语句都必须以关键字开始(var、const、func等)

      (2) :=不能使用在函数外

      (3) _多用于占位,表示忽略值

    2. 常量

      iota是go语言的常量计数器,只能在常量的表达式中使用。iota在const关键字出现时将被重置为0。const中每新增一行常量声明将使iota计数一次。

    3. 基本数据类型

      布尔值:

      (1) 布尔类型变量的默认值为false

      (2) Go语言中不允许将整形强制转换为布尔型

      (3) 布尔型无法参与数值运算,也无法与其他类型进行转换

      字符串:

      s3 := `
      多行字符串
      两个反引号之间的内容会
      原样输出
      \t
      \n
      `
      

      字符:

      byte: uint8的别名 只能表示ASCII码

      rune: int32的别名

    4. 运算符

      ++(自增)和--(自减)在Go语言中是单独的语句,并不是运算符

    5. 流程控制语句

      (1) if

      Go语言规定与if匹配的左括号{必须与if和表达式放在同一行,{放在其他位置会触发编译错误。与else匹配的{也必须与else写在同一行,else也必须与上一个if或else if右边的大括号在同一行。

      if判断特殊写法:在if表达式之前添加一个执行语句,再根据变量值进行判断

      if score := 65;score >= 90 {
          fmt.Println("A")
      } else if score > 75{
          fmt.Println("B")
      } else{
          fmt.Println("C")
      }
      

      上文if判断中用到的变量只在if代码块中生效

      (2) for

      类似其他语言while用法:

      var i = 10
      for i > 0{
          fmt.Println(i)
          i--
      }
      

      无限循环

      for{
          fmt.Println("Hello!")
      }
      

      for range遍历

      for index, value := range cityArray{
          fmt.Println(index,value)
      }
      
    6. 函数 go语言中函数传参全部是值拷贝

      闭包:闭包指的是一个函数和与其相关的引用环境组合而成的实体。简单来说,闭包=函数+引用环境

      func adder() func(int) int {
          var x int
          return func(y int) int {
              x += y
              return x
          }
      }
      func main() {
          var f = adder()
          fmt.Println(f(10)) //10
          fmt.Println(f(20)) //30
          fmt.Println(f(30)) //60
      ​
          f1 := adder()
          fmt.Println(f1(40)) //40
          fmt.Println(f1(50)) //90
      }
      

      变量f是一个函数并且它引用了其外部作用域中的x变量,此时f就是一个闭包。 在f的生命周期内,变量x也一直有效。

    7. 并发

      Go语言中使用 goroutine 非常简单,只需要在函数或方法调用前加上go关键字就可以创建一个 goroutine ,从而让该函数或方法在新创建的 goroutine 中执行。

      go f() // 创建一个新的 goroutine 运行函数f

      匿名函数也支持使用go关键字创建 goroutine 去执行。

      go func(){
        // ...
      }()
      

      一个 goroutine 必定对应一个函数/方法,可以创建多个 goroutine 去执行相同的函数/方法。