1、概述架构
一、特征并发
1.一、语法简单:规则严谨、保留指针、但默认阻止指针运算、将切片和字典做为内置类型、更好的维护性;函数
1.二、并发模型:运行时用GOroutine,一个关键字、简单而天然;搭配channel实现CSP模型;编码
1.三、内存分配:内存分配器完整保留了tcmalloc的原始架构,使用cache提供无锁分配、多个centrl在不通线程间平衡内存单元复用、heap管理大块内存;线程
1.四、垃圾回收:并发标记,逐步引入三色标记、写屏障;指针
二、简介code
2.一、源文件:blog
源码文件使用UTF-8编码,对Unicode支持良好。package声明所属包名称,以".go"做为文件扩展名,语句结束分号默认省略,入口函数main没有参数,必须放在main包中,索引
用import导入标准库或第三方包内存
示例:
package main
import (
"fmt"
)
func main() {
fmt.Println("hello,world!")
}
可直接运行,或编译为可执行文件
go run main.go
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.三、表达式
GO仅有三种流控制语句
if 示例: