GO语言基础语法 | 青训营笔记

65 阅读3分钟

Go 是一门开源的编程语言,由 Google 在 2009 年创建,是一种静态类型、编译型的语言。它具有语法简单、并发编程和高性能等优点,被广泛应用于网络编程、分布式系统、云计算等领域。

以下是 Go 语言的基础语法:

注释

Go 语言的注释有两种方式,一种是单行注释,以 // 开头,例如:

// 这是一条单行注释

另一种是多行注释,以 /* 开头,以 */ 结尾,例如:

/*
这是一条多行注释
可以跨行
*/

变量

Go 语言中的变量使用 var 关键字定义,例如:

var a int // 声明一个 int 类型的变量 a
a = 1     // 赋值为 1

var b = "hello" // 声明一个 string 类型的变量 b,并赋值为 "hello"

c := true // 声明一个 bool 类型的变量 c,并赋值为 true,使用 := 等价于 var c bool = true

变量的类型可以省略,由编译器根据赋值自动推导出来。

常量

Go 语言中的常量使用 const 关键字定义,例如:

const pi = 3.14 // 声明一个浮点型常量 pi,赋值为 3.14

const (
    Monday = 1
    Tuesday = 2
    Wednesday = 3
    Thursday = 4
    Friday = 5
    Saturday = 6
    Sunday = 7
) // 声明一组枚举型常量

函数

Go 语言中的函数使用 func 关键字定义,例如:

func add(a int, b int) int { // 定义一个名为 add 的函数,接收两个 int 类型的参数,返回一个 int 类型的值
    return a + b
}

Go 语言中的函数还支持多返回值,例如:

func swap(a, b int) (int, int) { // 定义一个名为 swap 的函数,接收两个 int 类型的参数,返回两个 int 类型的值
    return b, a
}

控制流语句

Go 语言中的控制流语句包括 if、for、switch 和 select。

if 语句的语法如下:

if condition {
    // do something
} else if condition {
    // do something
} else {
    // do something
}

for 语句的语法如下:

for initialization; condition; post {
    // do something
}

其中,initialization 用于初始化循环变量,condition 为循环条件,post 为每次循环后执行的语句。

Go 语言中的 switch 语句用于执行多个分支语句,并根据条件执行相应的代码块。下面是 Go 中 switch 语句的基本语法:

switch expression {
case value1:
    // 执行语句块1
case value2:
    // 执行语句块2
...
default:
    // 执行语句块n
}

expressionswitch 后的表达式,可以是一个常量、变量或表达式。case 后面的 value 是常量或表达式的结果,表示该分支需要执行的条件,每个 case 语句块结束后必须有一个 break 语句,用于跳出整个 switch 语句。

Go 中 switch 语句还有一个特殊的写法,即可以在 case 后面直接写一个表达式而省略掉 expression,例如:

switch {
case condition1:
    // 执行语句块1
case condition2:
    // 执行语句块2
...
default:
    // 执行语句块n
}

在这种写法中,每个 case 后面的条件表达式会在运行时进行求值,然后根据条件执行相应的语句块。

在 Go 中,switch 语句还支持多个条件的匹配,例如:

switch expression {
case value1, value2, value3:
    // 执行语句块1
case value4, value5, value6:
    // 执行语句块2
...
default:
    // 执行语句块n
}

在这个例子中,如果 expression 的值与 value1value2value3 中的任意一个相等,则执行第一个 case 语句块。如果 expression 的值与 value4value5value6 中的任意一个相等,则执行第二个 case 语句块。如果 expression 的值都不匹配任何一个 case,则执行 default 语句块。

最后需要注意的是,在 Go 中,如果 switch 语句中的条件表达式是一个变量,则可以省略掉 case 语句块中的条件表达式,例如:

switch day := time.Now().Weekday(); {
case day == time.Saturday || day == time.Sunday:
    fmt.Println("It's the weekend")
default:
    fmt.Println("It's a weekday")
}

在这个例子中,day 是一个变量,它的值由 time.Now().Weekday() 函数返回。由于这个变量只在 switch 语句中有效,因此可以直接在 case 语句块中使用它。这种写法可以简化代码,同时也使得代码更加易读。