这是我参与「第五届青训营 」伴学笔记创作活动的第 1 天
Go语言基础语法学习
1、变量
Go语言是静态类型语言,因此变量(variable)是有明确类型的,编译器也会检查变量类型的正确性,声明变量的一般形式是使用 var 关键字,变量声明标准格式:
var name type
其中,var 是声明变量的关键字,name 是变量名,type 是变量的类型。Go语言和许多编程语言不同,它在声明变量时将变量的类型放在变量的名称之后。当一个变量被声明之后,系统自动赋予它该类型的零值:int 为 0,float 为 0.0,bool 为 false,string 为空字符串,指针为 nil 等。所有的内存在 Go 中都是经过初始化的。
变量的命名规则遵循骆驼命名法,即首个单词小写,每个新单词的首字母大写,例如:numShips 和 startDate 。
Go语言的基本类型有:
- bool
- string
- int、int8、int16、int32、int64
- uint、uint8、uint16、uint32、uint64、uintptr
- byte
- rune
- float32、float64
- complex64、complex128
还可使用批量方式声明变量,如:
var (
a int
b string
c []float32
d func() bool
e struct {
x int
}
)
2、循环与语句
2.1、if-else
Go语言中,关键字 if 是用于测试某个条件的语句,如果该条件成立,则会执行 if 后由大括号{}括起来的代码块,否则就忽略该代码块继续执行后续的代码。如果存在第二个分支,则可添加 else 关键字以及另一代码块,这个代码块中的代码只有在条件不满足时才会执行,if 和 else 后的两个代码块是相互独立的分支,只能执行其中一个。
if condition1 {
// 逻辑代码
} else if condition2 {
// 逻辑代码
}else {
// 逻辑代码
}
注意:关键字 if 和 else 之后的左大括号{必须和关键字在同一行,如果你使用了 else 结构,则前段代码块的右大括号}必须和 else 关键字在同一行,这都是强制规定的。
if x{
}
else { // 无效的
}
2.2、switch
Go语言中的 switch 结构使用上更加灵活,语法设计尽量以使用方便为主,表达式不需要为常量,甚至不需要为整数,case 按照从上到下的顺序进行求值,直到找到匹配的项,如果 switch 没有表达式,则对 true 进行匹配,因此也将 if else-if else 改写成一个 switch。 case 与 case 之间是独立的代码块,不需要通过 break 语句跳出当前 case 代码块以避免执行到下一行,示例代码如下:
var a = "hello"
switch a {
case "hello":
fmt.Println(1)
case "world":
fmt.Println(2)
default:
fmt.Println(0)
}
2.3、for
Go语言中的循环语句只支持 for 关键字,而不支持 while 和 do-while 结构:
sum := 0
for i := 0; i < 10; i++ {
sum += i
}
无限循环写法:
sum := 0
for {
sum++
if sum > 100 {
break
}
}
2.4、range
for range 结构是Go语言特有的一种的迭代结构,在许多情况下都非常有用,for range 可以遍历数组、切片、字符串、map 及通道(channel),for range 语法上类似于其它语言中的 foreach 语句,一般形式为:
for key, val := range coll {
...
}
遍历数组、切片——获得索引和值,key 和 value 分别代表切片的下标及下标对应的值:
for key, value := range []int{1, 2, 3, 4} {
fmt.Printf("key:%d value:%d\n", key, value)
}