$ cat Golang 笔记——结构

Golang 笔记——结构

程序结构

1
2
3
package 包名
import 包名
func, var, const, type 开头的声明

例子:

1
2
3
4
5
6
package main
import "fmt"

func main() {
fmt.Println("Hello World!")
}

函数结构

一个函数的声明由 func 关键字、函数名、参数列表(main 函数为空)、返回值列表(可以为空)、放在大括号内的函数体组成,函数体定义函数是用来干什么的

语句结构

Go 不需要在语句或声明后面使用分号,除非有多个语句或者声明出现在同一行。事实上,跟着特定符号后面的换行符被替换为分号,在什么地方换行会影响对 Go 代码的解析。例如,“{” 符号 必须 和关键字 func 在同一行,不能独自成行,并且在 x+y 这个表达式中,换行符可以在 + 操作符的后面,但是不能在 + 操作符的前面。

Go 对代码的格式要求非常严格。 gofmt 工具将代码以标准格式重写,go 工具的 fmt 子命令使用 gofmt 工具来格式化指定包里的所有文件或者当前文件夹中的文件(默认情况下)。

goimports 可以按需管理导入声明的插入和移除。

注释

单行注释以 // 开头,多行注释 /*......*/这种形式, 编译器将会忽略它们。

变量结构

var 关键字声明变量。变量可以在声明的时候初始化,如果没有明确初始化,它将隐式的初始化为这个类型的空值(数字是 0, 字符串是 *””* )。

例子:

1
2
3
4
5
6
7
8
9
10
// 基本机构 var 变量名 数据类型
var a,b string
// := 符号用于短变量声明,声明一或多个变量,根据初始化的值给予合适的类型
i := 1
// 其他形式
var s = ""
var s string = ""
// 递增,递减是语句而不是表达式,仅支持后缀,所以 --i, ++i 均不合法
i ++
i --

循环结构

for 是 Go 里 唯一 的循环语句。

1
2
3
for initialization; condition; post {
// 零或者多个语句
}

for 循环的三个组成部分两边不用小括号。大括号是必须的,但是左大括号必须post (后置)语句在同一行

1
2
3
for condition {
// 零或者多个语句
}

三部分都是可以省略的。如果没有 initializationpost 语句,分号可以省略

1
2
3
for {
// 零或者多个语句
}

如果三个部分都不存在,循环是无限的,可以通过 break 或者 return 语句进行终止。

条件结构

if 语句中的条件部分也从不放在圆括号里面。

1
2
3
if condition {
// 语句
}

switch 语句 default 可以放在任何地方,不一定是最后。它不一定需要操作数。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
switch condition {
case 1:
i ++
default:
i --
}

switch {
case x > 0:
return +1
default:
return 0
case x < 0:
return -1
}

空标识符

_ 即下划线。Go 不允许存在无用的临时变量,不如会出现编译错误。解决方案是使用 空标识符。它可以用在任何语法需要变量名但是程序逻辑不需要的地方。

1
2
3
for _, arg := range os.Args[1:] {
// 语句
}