1. 垃圾回收python
a. 內存自動回收,不再須要開發人員管理內存linux
b. 開發人員專一業務實現,下降了心智負擔golang
c. 只須要new分配內存,不須要釋放併發
2. 自然併發函數
a . 從語言層面支持併發,很是簡單線程
b. goroute,輕量級線程,建立成千上萬個goroute成爲可能unix
c. 基於CSP(Communicating Sequential Process)模型實現blog
func main() { go fmt.Println(「hello") }
3. channel ip
a . 管道,相似unix/linux中的pipe內存
b. 多個goroute之間經過channel進行通訊
c. 支持任何類型
func main() { pipe := make(chan int,3) pipe <- 1 pipe <- 2 }
4. 多返回值
a. 一個函數返回多個值
func calc(a int, b int)(int,int) { sum := a + b avg := (a+b)/2 return sum, avg }
1. hello world,在目錄下新建hello.go
package main import( 「fmt」 ) func main() { fmt.Println(「hello world」) }
1. 和python同樣,把相同功能的代碼放到一個目錄,稱之爲包
2. 包能夠被其餘包引用
3. main包是用來生成可執行文件,每一個程序只有一個main包
4. 包的主要用途是提升代碼的可複用性
1. calc目錄
2. 在calc目錄下新建calc.go
package calc func Add(a int, b int) int { return a + b }
3. 修改hello.go代碼,以下
package main import( 「fmt」 「calc」 ) func main() { sum := calc.Add(3,5) fmt.Println(「hello world,%d」,sum) }