Go语言基础语法 - 02

79 阅读4分钟

if-else语句

package main

import "fmt"

func main() {

    // 检查 7 是否能被 2 整除
    if 7%2 == 0 {
        fmt.Println("7 is even") // 如果条件为真,打印 "7 is even"
    } else {
        fmt.Println("7 is odd") // 否则,打印 "7 is odd"
    }

    // 检查 8 是否能被 4 整除
    if 8%4 == 0 {
        fmt.Println("8 is divisible by 4") // 如果条件为真,打印 "8 is divisible by 4"
    }

    // 声明并初始化变量 num 为 9,然后检查 num 是否小于 0
    if num := 9; num < 0 {
        fmt.Println(num, "is negative") // 如果条件为真,打印 num 是负数
    } else if num < 10 {
        fmt.Println(num, "has 1 digit") // 否则,如果 num 小于 10,打印 num 是一位数
    } else {
        fmt.Println(num, "has multiple digits") // 否则,打印 num 是多位数
    }
}

Go 语言里面的 if-else 写法和 C 或者 C++ 类似。不同点如下:

  1. 没有括号
    • 在 Go 语言中,if 后面没有括号。如果你写括号的话,那么在保存的时候你的编辑器会自动把你去掉。
  2. 大括号必须存在
    • Go 语言里面的 if,它必须后面接大括号,就是你不能像 C 或者 C++ 一样,直接把 if 里面的语句同一行。
  3. 初始化语句
    • Go 语言的 if 语句可以包含一个初始化语句,初始化语句和条件表达式之间用分号分隔。例如:if num := 9; num < 0

switch 分支结构

Go 语言中的 switch 语句用于执行多分支选择操作。与 C 或 C++ 类似,switch 语句根据表达式的值选择执行的代码块。然而,Go 语言中的 switch 语句有一些显著的不同和增强功能。

package main

import (
    "fmt"
    "time"
)

func main() {
    a := 2
    switch a {
    case 1:
        fmt.Println("one")
    case 2:
        fmt.Println("two")
    case 3:
        fmt.Println("three")
    case 4, 5:
        fmt.Println("four or five")
    default:
        fmt.Println("other")
    }

    t := time.Now()
    switch {
    case t.Hour() < 12:
        fmt.Println("It's before noon")
    default:
        fmt.Println("It's after noon")
    }
}
  1. 基本结构
    • switch 语句后面跟一个表达式(如变量 a,根据表达式的值选择执行相应的 case 代码块。
    • 每个 case 语句后面跟一个值或多个值(用逗号分隔),如果表达式的值与 case 的值匹配,则执行该 case 代码块。
    • default 语句是可选的,当没有匹配的 case 时执行 default 代码块。
  2. 无需显式 break
    • 在 C 或 C++ 中,switch 语句中的每个 case 代码块通常需要以 break 语句结束,以防止执行后续的 case 代码块。
    • 在 Go 语言中,每个 case 代码块默认会自动终止,不需要显式的 break 语句。
  3. 多值 case
    • Go 语言允许在一个 case 语句中指定多个值,如 case 4, 5:,当表达式的值为 4 或 5 时,执行相应的代码块。
  4. 无表达式的 switch
    • Go 语言中的 switch 语句可以不带表达式,此时每个 case 语句可以包含一个布尔表达式。
    • 这种用法可以替代多个 if-else 语句,使代码逻辑更加清晰。

数组

package main

import "fmt"

func main() {

    var a [5]int
    a[4] = 100
    fmt.Println("get:", a[2])
    fmt.Println("len:", len(a))

    b := [5]int{1, 2, 3, 4, 5}
    fmt.Println(b)

    var twoD [2][3]int
    for i := 0; i < 2; i++ {
        for j := 0; j < 3; j++ {
            twoD[i][j] = i + j
        }
    }
    fmt.Println("2d: ", twoD)
}
  1. 数组声明和初始化
    • 在 Go 语言中,数组是具有固定长度且元素类型相同的集合。
    • 通过 var a [5]int 声明一个长度为 5 的整型数组 a。数组的默认值是元素类型的零值,对于整型数组来说,默认值是 0。
  2. 数组元素赋值
    • 使用索引访问和赋值数组元素,例如 a[4] = 100将数组 a的第五个元素(索引从 0 开始)赋值为 100。
  3. 数组元素访问
    • 通过索引访问数组元素,例如 a[2] 获取数组 a的第三个元素。
    • 使用 fmt.Println("get:", a[2])打印数组 a的第三个元素。
  4. 数组长度
    • 使用内置函数 len 获取数组的长度
  5. 数组初始化
    • 可以在声明数组的同时进行初始化,例如 b := [5]int{1, 2, 3, 4, 5} 声明并初始化一个长度为 5 的整型数组b
  6. 多维数组
    • Go 语言支持多维数组,例如 var twoD [2][3]int 声明一个 2x3 的二维整型数组twoD