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
}
expression 是 switch 后的表达式,可以是一个常量、变量或表达式。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 的值与 value1、value2 或 value3 中的任意一个相等,则执行第一个 case 语句块。如果 expression 的值与 value4、value5 或 value6 中的任意一个相等,则执行第二个 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 语句块中使用它。这种写法可以简化代码,同时也使得代码更加易读。