原创 Go 語言聖經 7.7 http.Handler接口

7.7 http.Handler接口 知識點 1.單一使用handler處理 2.聚合使用handlers處理 3.http.HandlerFunc是一個類型,實現了接口http.Handler方法的函數類型 4.net/htt

原创 Go 語言聖經 7.1 接口是合約

/* 第七章 接口 1.接口類型是對其它類型行爲的抽象和概括 2.Go語言中接口類型的獨特之處在於它是滿足隱式實現的 */ 7.1 接口是合約 知識點 1.接口合約就像ObjC的繼承,繼承父類的方法並重新實現,因此可以被合

原创 Go 語言聖經 Display,一個遞歸的值打印器

12.3 Display,一個遞歸的值打印器 知識點 1.reflect包提供了反射功能,定義兩個類型Type和Value 2.Type表示一個Go類型. 它是一個接口 3.一個Value,有很多方法來檢查其內容, 無論具體類型

原创 Go 語言聖經 第十二章 反射

/* 第十二章 反射 Go語言提供了一種反射機制, 能夠在運行時更新變量和檢查它們的值、調用它們的方法和它們支持的內在操作, 而不需要在編譯時就知道這些變量的具體類型。 反射是一個複雜的內省技術, 不應該隨意使用 fmt包提供的字

原创 Go 語言聖經 第十一章 測試

/** 第十一章 測試 Go語言的測試技術是相對低級的 它依賴一個go test測試命令和一組按照約定方式編寫的測試函數,測試命令可以運行這些測試函數 編寫相對輕量級的純測試代碼是有效的,而且它很容易延伸到基準測試和示例文檔 */

原创 Go 語言聖經 9.4 內存同步

9.4 內存同步 知識點 1.在一個獨立的goroutine中,每一個語句的執行順序是可以被保證的 2.所有併發的問題都可以用一致的、簡單的既定的模式來規避 3.多個goroutine都需要訪問的變量,使用互斥條件來訪問 代碼

原创 Go 語言聖經 9.8 Goroutines和線程

9.8 Goroutines和線程 知識點 1.每一個OS線程都有一個固定大小的內存塊(一般會是2MB)來做棧, 這個棧會用來存儲當前正在被調用或掛起(指在調用其它函數時)的函數的內部變量 2.goroutine會以一個很小的棧開始

原创 Go 語言聖經 8.5 併發的循環

8.5 併發的循環 知識點 1.和switch語句稍微有點相似,也會有幾個case和最後的default選擇支 2.每一個case代表一個通信操作(在某個channel上進行發送或者接收)並且會包含一些語句組成的一個語句塊 3.一個接

原创 Go 語言聖經 8.2 示例: 併發的Clock服務

8.2 示例: 併發的Clock服務 知識點 1.網絡編程是併發大顯身手的一個領域 2.go語言的net包,提供編寫一個網絡客戶端或者服務器程序的基本組件 代碼 func test_clock() { listener,

原创 Go 語言聖經 7.12 通過類型斷言查詢接口

7.12 通過類型斷言查詢接口 知識點 1. 2. 3. 代碼 章節中樣例 func test_assertions_findInterface() { //急需補充^_^^_^^_^ } ——不足之處,歡迎補充——

原创 Go 語言聖經 9.2 sync.Mutex互斥鎖 9.3 sync.RWMutex讀寫鎖

9.2 sync.Mutex互斥鎖 知識點 1.一個只能爲1和0的信號量叫做二元信號量(binary semaphore) 2.這種互斥很實用,而且被sync包裏的Mutex類型直接支持 3.Lock和Unlock的調用是在所有路徑

原创 Go 語言聖經 7.9 示例: 表達式求值

7.9 示例: 表達式求值 知識點 1. 2. 3. 代碼 1.章節中樣例 2.練習 7.13 3.練習 7.14 4.練習 7.15 5.練習 7.16 func test_expression() { //小弟初學

原创 Go 語言聖經 9.6 競爭條件檢測 & 9.7 示例: 併發的非阻塞緩存

9.6 競爭條件檢測 知識點 1.Go的runtime和工具鏈爲我們裝備了動態分析工具–競爭檢查器(the race detector) 9.7 示例: 併發的非阻塞緩存 知識點 1.duplicate suppressio

原创 Go 語言聖經 9.5 sync.Once初始化

9.5 sync.Once初始化 知識點 1.初始化延遲到需要的時候再去做就是一個比較好的選擇–懶加載 2.所有併發的問題都可以用一致的、簡單的既定的模式來規避 3.多個goroutine都需要訪問的變量,使用互斥條件來訪問 代碼

原创 Go 語言聖經 8.4 Channels

8.4 Channels 知識點 1.goroutine是Go語言程序的併發體的話,channels則是它們之間的通信機制 2.一個channel是一個通信機制,它可以讓一個goroutine通過它給另一個goroutine發送值信息