golang小知識點記錄

FancyGo發表於2016-11-04

作用域是靜態的,編譯時期的概念 生命週期是動態的,執行時期的概念

Go的排序介面需要實現哪幾個函式 Len Less Swap

Go同時建立的執行緒數最大多少 10000, proc.go中定義了這個值, 超過會丟擲異常

Go channel, close後 將不能被send資料, 但還是可以接收之前已經成功傳送的資料, 如果已經沒有資料了, 將接收到一個零值

Go 無緩衝的建立 ch = make(chan int) ch = make(chan int, 0) 有緩衝的建立 ch = make(chan int, 1)

無緩衝channel, 傳送資料後, 傳送方將阻塞, 直到資料被接收

判斷一個channel是否被關閉 x, ok := <-naturals 如果ok是true說明成功接收了

函式引數建立單方向channel, 接收 <-chan int, 傳送 chan<- int

go的優點,效能和c相近,天然的併發性,開發效率高。大型程式組織的能力,不允許迴圈依賴。 go test可測試能力,錯誤檢查能力。panic現場。 上線和運維,把所有依賴全部打包為獨立的可執行程式。不需要其他系統的依賴。

一次性初始化使用 sync.Once

gc的優化,輪流停gc,服務,停服務,執行gc

go test 列印每個測試函式名字和執行時間的引數 -v

go interface{} 內部兩個位元組的指標,一個指向方法表,一個指向資料結構

goroutine 和 os執行緒的區別 go使用動態棧 goroutine的排程代價要逼os執行緒低很多 使用cpu核心,並行排程 goroutine沒有id號