参考资料:effective GO

一.前言
二.基本格式
三.函数
四.数据与初始化
五.空白标识符
六.内嵌
七.并发
八.错误

一. 前言

Go语言是一门静态强类型,编译型语言;作为热门语言中较为罕见的近年来诞生的go语言,已经在行业内部有了较大规模的应用,应用于云计算,网站开发和并发处理等领域,尤其在国内热度较高,由于其较为特殊的语言性质,有一定的学习价值。

二. 基本格式

  1. 注释和分号
  2. 控制结构

1. 注释和分号

GO语言提供了较为方便的官方代码格式化工具 gofmt ,从而方便不同代码习惯的开发者。GO的注释方式和C相同,但是与C语言不同的是,虽然go的分号同样意味着语句的终结,但词法分析器在扫描时会自动插入括号,因此控制结构中的大括号不能放在下一行。

2. 控制结构

与python相似,GO语言的控制结构不需要括号,但是大括号是强制的。GO语言没有do和while,但是拥有功能更为强大的if,swith和for。

选择结构


if和switch支持在条件中接受初始化语句,可以在选择结构中创建结构变量,与for相似

1
2
3
4
if err := file.Chmod(0664); err != nil {
log.Print(err)
return err
}

循环结构


go语言循环结构的三种格式

1
2
3
4
5
6
7
8
// Like a C for
for init; condition; post { }

// Like a C while
for condition { }

// Like a C for(;;)
for { }

使用range子句管理循环,相当于python的in

1
2
3
4
sum := 0
for _, value := range array {
sum += value
}

其中_为空白标识符。顺带一提,go语言中没有逗号操作符和三目运算符。

三. 函数

与c语言相比,go的函数可以有多个返回值,因此在确定程序运行状态时可以有更好的表述。go语言函数的基本定义形式:

1
2
3
func function_name( [parameter list] ) [return_types] {
//函数体
}

函数返回值可以命名,这样返回值是被初始化的,并且和return语句绑定在一起.

1
func nextInt(b []byte, pos int) (value, nextPos int) {

四. 数据与初始化

go语言数据类型:布尔型,数字类型,字符串类型,派生类型

五. 空白标识符

六. 内嵌

七. 并发

八. 错误