Day01-Go基础 | 青训营笔记

84 阅读3分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 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)
}