前言

作者较为熟悉C和JS的语法,因此可能主要会将go与C的语法进行对比。

包、导入与可见性

每个 .go 文件相当于一个包。

文件开头使用 package main 声明包的名字 main

引入外部包可以使用 import "os" ,如果需要一次引入多个包,可以使用:

1
2
import "fmt"
import "os"
1
2
3
4
import (
"fmt"
"os"
)

1
import ( "fmt" ; "os" )

若包中的标识符以一个大写字母开头,则在外部可见。
也可以为包定义别名:import 别名 "包名"

常量

常量的类型可以自动推断,也可以使用任何大小和类型也不会溢出

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
const a = 1
const b, c, d = 1, 2, 3
const (
a = 1
b = 2
c = 3
)
const (
Unknown = 0
Female = 1
Male = 2
)
const (
a = iota // a = 0
b // b = 1
c // c = 2
d = 5 // d = 5
e // e = 5
)
const (
_ = iota // 使用 _ 忽略不需要的 iota
KB = 1 << (10 * iota) // 1 << (10*1)
MB // 1 << (10*2)
GB // 1 << (10*3)
TB // 1 << (10*4)
PB // 1 << (10*5)
EB // 1 << (10*6)
ZB // 1 << (10*7)
YB // 1 << (10*8)
)

流程控制语句

if-else 语句必须使用大括号,即使只有一条语句。
右大括号与 else 必须在同一行。