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 示例: