Go 基本变量和语句 | 青训营笔记

73 阅读2分钟

Go 基本变量和语句

变量

变量和常量

  • 变量有varconst两种
    • var赋值后可变更
    • const赋值后不可变更

变量的声明和初始化

  • 直接用赋值的形式声明
var str = "A String."

声明后变量根据其值自动确定数据类型

  • 清晰写出变量类型与数值
var i1 int = 1
  • 同时声明多个相同数据类型的变量
var b2, b2 bool = true, false
  • 使用 := 直接声明变量赋值
f := 3.14159

变量基本类型

  • 常见的变量类型包括:stringintboolfloat
  • 大部分运算符的使用和优先级都和 C/C++ 类似

控制语句

分支语句

if-else 分支

  • if-else 的写法和 C/C++ 类似,但是没有小括号
  • go 的大括号不能换行,必须放在if的同一行里。
  • if 中可以声明变量和赋值
hello := "Hello"
if i = 9; i < 10 {
    func1()
} else if len(hello) == 5 {
    func2()
} else {
    func3()
}

switch 分支

  • 同样与 C/C++ 类似,不需要小括号
  • 不需要在case中加括号,不会执行到其他case
  • switch可以使用任意变量类型,甚至可以用来取代 if-else,此时不在switch后添加任何变量
hello := "Hello"
i := 9;
switch {
    case i < 10: 
        func1()
    case len(hello) == 5:
        func2()
    default:
        func3()
}

循环语句

  • Go 没有while循环和do-while循环,只有for循环
  • Go 的for循环写法和 C/C++ 类似,但是没有小括号
  • 可以使用break跳出循环或者continue继续循环
for i := 1; i < 10; i++ {
    if shouldBreakAt(i) {
        break
    }
    if notOperateAt(i) {
        continue
    }
    operate(i)
}

数组

数组

  • 数组是一个具有编号且长度固定的元素序列
  • 数组的使用和 C/C++ 类似
var arr [5]int
a[4] = 100
  • 数组自定义数据初始化
var arr [3]sting{"s1", "s2", "s3"}
  • 二维数组的声明
var matrix [2][3]int
  • 由于数组定义之后无法更改长度,因此使用频率并不是很高

切片

  • 与数组不同的是,切片可以任意更改长度,而且具有更丰富的操作
  • 使用make创建切片
s := make([]string, 3)
s[0] = "a"
s[1] = "b"
s[2] = "c"
  • 使用append给切片追加元素,但需要把返回值赋给原切片
s = append(s, "d", "e")

append可以一次添加多个元素

  • slice的原理是存储了切片的长度、容量和一个指向数组的指针,当执行append操作时,如果容量不够的话,会重新申请新的空间因此会返回新的切片
  • Go 的切片操作与 python 类似,支持取某一段元素
b2d := s[1:4]
a2d := s[:4]
b2e := s[1:]

与 python 不同的是,这里不支持负数索引