Go 基本变量和语句
变量
变量和常量
- 变量有
var和const两种var赋值后可变更const赋值后不可变更
变量的声明和初始化
- 直接用赋值的形式声明
var str = "A String."
声明后变量根据其值自动确定数据类型
- 清晰写出变量类型与数值
var i1 int = 1
- 同时声明多个相同数据类型的变量
var b2, b2 bool = true, false
- 使用
:=直接声明变量赋值
f := 3.14159
变量基本类型
- 常见的变量类型包括:
string、int、bool、float等 - 大部分运算符的使用和优先级都和 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 不同的是,这里不支持负数索引