Go语言的基础语法(中,含实践)|青训营

81 阅读3分钟

一.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")},输出结果为:e8cb459e644e3e2b5fcd744789916a4.png即不停地输出Hi。

2.2 continue关键字

表示跳过该轮循环进入下一轮循环中,比如代码

for i := 0; i < 10; i++ {
       if i == 1 {
          continue
       }
       fmt.Println(i)
}

表示在i自增的过程中若i为1时,遇到continue,则下面所有的语句都不执行,直接进入下一轮的循环中,也就是说从原理上讲,在输出0到9时不会输出1,实践结果如下图: b5cc9c24e56f51667a015972346fe06.png

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)
}

输出结果为: 3faadda4d126bd428db13af1216013d.png