golang語言特性 1. 垃圾回收 a. 記憶體自動回收,再也不需要開發人員管理記憶體 b. 開發人員專註業務實現,降低了心智負擔 c. 只需要new分配記憶體,不需要釋放 2. 天然併發 a . 從語言層面支持併發,非常簡單 b. goroute,輕量級線程,創建成千上萬個goroute成為可能 c. ...
golang語言特性
1. 垃圾回收
a. 記憶體自動回收,再也不需要開發人員管理記憶體
b. 開發人員專註業務實現,降低了心智負擔
c. 只需要new分配記憶體,不需要釋放
2. 天然併發
a . 從語言層面支持併發,非常簡單
b. goroute,輕量級線程,創建成千上萬個goroute成為可能
c. 基於CSP(Communicating Sequential Process)模型實現
func main() { go fmt.Println(“hello") }
3. channel
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 }
第一個golang程式
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) }