一.if-else语句
1.1 Go语言中if-else可以不写括号,比如
package main
import "fmt"
func main() {
a := 1
if a == 1 {
fmt.Println("a is 1")
}
}
在此代码中对于判断a是否等于1时,就没有加括号,不仅如此,对于C的if(a){...}是可以通过编译的,属于隐式转换为bool类型的变量,但是对于Go如果只是if a {...},是过不了编译的。
1.2 Go语言中if-else中的条件可以写分号
比如
if num := 12; num > 0 {
fmt.Println("num is a positive number")
}
这里在if后面紧跟定义了一个num,随后if语句开始判断num是否大于0,也就是说,分号后面为判断条件,分号前面可以是对变量的定义。
1.3 Go语言中if-else语句的关键词必须要和大括号的左括号同行
只能if 条件 {,左括号不能放在下一行,否则会报错。
二. 循环语句
2.1 for循环语句
Go语言中只有for语句来表示循环,while是不存在的。同样执行条件不需要加括号,对于死循环,可以直接写成for {...},比如代码for {fmt.Println("Hi")},输出结果为:即不停地输出Hi。
2.2 continue关键字
表示跳过该轮循环进入下一轮循环中,比如代码
for i := 0; i < 10; i++ {
if i == 1 {
continue
}
fmt.Println(i)
}
表示在i自增的过程中若i为1时,遇到continue,则下面所有的语句都不执行,直接进入下一轮的循环中,也就是说从原理上讲,在输出0到9时不会输出1,实践结果如下图:
2.3 break关键字
一旦在for循环中遇到break关键字则表示马上退出这一层的循环语句,也就是说若有嵌套的两层循环语句,最里面的一层循环遇到了for循环则马上退出最里面的循环继续走外面的循环。
三. 切片
3.1 切片是什么
Go语言中的切片(slice)是一种轻量级的数据结构,用于操作数组的子序列。切片提供了一种方便的方式来处理动态大小的数据集合,也就是动态数组,与C++的容器有相似之处,都是变长度的数组。
3.2 切片的定义方法
方法一:var sliceName []ElementType
其中,sliceName 是切片的变量名,ElementType 是切片中元素的类型,也可以写成sliceName := []ElementType{...}定义完顺便顺便初始化。
方法二:使用make关键字
sliceName := make([]ElementType, Capacity)表示创建一个容量为Capacity的切片(类似C++的new关键字),比如s := make([]int, 3)表示创建了int类型,容量为3的切片。当需要追加元素时,则要使用append函数对其扩容,用法为sliceName = append(s, 要追加的值),实践如下:对于代码
package main
import "fmt"
func main() {
s := make([]int, 3)
for i := 0; i < 3; i++ {
s[i] = i
}
for i := 0; i < 3; i++ {
fmt.Println(s[i])
}
s = append(s, 13, 12, 1)
fmt.Println(s)
}
输出结果为: