GO语法初探 | 青训营

37 阅读2分钟

本文将介绍Go语言的部分基础语法,包括变量和常量、流程控制语句(if-else,for,switch-case)、数组与切片。

变量和常量

Go 语言是一种强类型语言(每个变量都有自己的类型),常见的变量类型包括字符串(内置类型,通过+拼接;通过=比较两个字符串)、整数、浮点型、布尔型。运算符的优先级与C语言类似。

变量申明可以使用关键字var name (+变量类型) = value ,不指出变量类型则自动根据value判断。也可以name := value或者name := 变量类型(value)

例如:var x int =1

常量将var改为const,无确定的类型(根据使用的上下文自动确定类型)

例如:const pi = 3.14159

流程控制语句

If-else

与C语言不同之处在于,if后面的条件判断没有(),但必有{}。

for循环

for后的三个可选部分无(),可省略全部或部分,必有{}。可与breakcontinue结合使用。

switch-case

与C语言不同的是,case 后不加break默认不继续后续分支。switch后的变量无需括号(也可先无变量,在case中再进行变量值的判断),类型多样(甚至可以是结构体),故可用于取代任何if-else语句,且更优(结构清晰易懂)。

数组

在Go语言中,数组是一种基本的数据类型,它由固定数量的相同类型元素组成,并且在声明时需要指定数组的长度。Go语言中的数组支持下标访问和修改元素的值,并且支持多维数组的定义和使用。

下面是一个数组的例子:

func main() {

    var a [5]int //用var关键字声明数组并指定它的长度
    a[4] = 100 //通过下标访问数组的元素第5个元素赋值为100
    fmt.Println("get:", a[2])
    fmt.Println("len:", len(a)) //使用len()函数获取数组的长度
    b := [5]int{1, 2, 3, 4, 5} //定义长度为5的整型数组b,初始化为1、2、3、4、5
    fmt.Println(b)
​
    var twoD [2][3]int //多维数组:定义2行3列的整型数组twoD
    for i := 0; i < 2; i++ { //使用嵌套的for循环来遍历二维数组
        for j := 0; j < 3; j++ {
            twoD[i][j] = i + j //下标访问和修改数组元素的值
        }
    }
    fmt.Println("2d: ", twoD)
}

切片

不同于数组,切片是一种可变长度的数组,它可以根据需要时刻更改长度。切片是包含指向底层数组的指针、长度和容量。在创建切片时,可以使用make()函数。切片可以像数组一样写入和读取值。使用append()函数向切片中添加新的元素。(注意:必须将结果复制回原数组。原因如下:当切片的长度超过其容量时,底层数组将会重新分配更大的空间,并将原来的元素复制到新的空间中,返回新空间的值。)

func main() {

s := make([]string, 3) //make()函数创建长度为3的字符串切片s,以下为赋值操作    
    s[0] = "a"
    s[1] = "b"
    s[2] = "c"
    fmt.Println("get:", s[2])   // c
    fmt.Println("len:", len(s)) // 3

    s = append(s, "d")
    s = append(s, "e", "f") //用append()函数向切片s中添加了d、e和f
    fmt.Println(s) // [a b c d e f]
​
    c := make([]string, len(s)) //在创建切片时就指定长度
    copy(c, s) //复制切片的值:copy()函数
    fmt.Println(c) // [a b c d e f]

    fmt.Println(s[2:5]) // [c d e] 用切片表达式来访问切片的子集
    fmt.Println(s[:5])  // [a b c d e]
    fmt.Println(s[2:])  // [c d e f]

    good := []string{"g", "o", "o", "d"}
    fmt.Println(good) // [g o o d]
}

个人感想:有了C语言的学习基础,在学习GO语言语法的时候只需着重记忆不同点即可。而且GO语言的语法灵活性很强,上手容易。