一、概述
1、特征
1.1、语法简单:规则严谨、保留指针、但默认阻止指针运算、将切片和字典作为内置类型、更好的维护性;
1.2、并发模型:运行时用GOroutine,一个关键字、简单而自然;搭配channel实现CSP模型;
1.3、内存分配:内存分配器完整保留了tcmalloc的原始架构,使用cache提供无锁分配、多个centrl在不通线程间平衡内存单元复用、heap管理大块内存;
1.4、垃圾回收:并发标记,逐步引入三色标记、写屏障;
2、简介
2.1、源文件:
源码文件使用UTF-8编码,对Unicode支持良好。package声明所属包名称,以".go"作为文件扩展名,语句结束分号默认省略,入口函数main没有参数,必须放在main包中,
用import导入标准库或第三方包
示例:
package main
import (
"fmt"
)
func main() {
fmt.Println("hello,world!")
}
可直接运行,或编译为可执行文件
go run main.go
2.2、变量
使用var定义变量,编译器总是被初始化为零值,避免出现意外状况,
示例一:
package main
func main() {
var x int32
var s = "hello,world!"
println(x,s)
}
在函数内部,还可省略var关键之,使用更简单的定义模式
示例二:
package main
func main() {
x := 100 //注意,赋值符号不同
println(x)
}
2.3、表达式
GO仅有三种流控制语句
if 示例:
