原创 Go channel 實現原理分析

channel一個類型管道,通過它可以在goroutine之間發送和接收消息。它是Golang在語言層面提供的goroutine間的通信方式。 衆所周知,Go依賴於稱爲CSP(Communicating Sequential Process

原创 golang new和make的區別

Go語言中new和make都是用來內存分配的原語(allocation primitives)。簡單的說,new只分配內存,make用於slice,map,和channel的初始化。 new new(T)函數是一個分配內存的內建函數。 我們

原创 GO中間件(Middleware )

中間件是一種計算機軟件,可爲操作系統提供的軟件應用程序提供服務,以便於各個軟件之間的溝通,特別是系統軟件和應用軟件。廣泛用於web應用和麪向服務的體系結構等。 縱觀GO語言,中間件應用比較普遍,主要應用: 記錄對服務器發送的請求(requ

原创 GO 匿名函數和閉包

匿名函數:顧名思義就是沒有名字的函數。很多語言都有如:java,js,php等,其中js最鍾情。匿名函數最大的用途是來模擬塊級作用域,避免數據污染的。 今天主要講一下Golang語言的匿名函數和閉包。 匿名函數 示例: 1、 package

原创 GO 單例模式

單例模式是常用的模式之一,一般介紹的單例模式有 餓漢式 和 懶漢式 等,不管那種模式最終目的只有一個,就是值實例化一次,只允許一個實例存在。 GO語言實現單例模式相對簡單,這裏考慮到併發,用到了sync.Mutex 和結構體sync.On

原创 Go 單元測試和性能測試

測試對於互聯網應用軟件開發來說非常重要,它對軟件可靠性保證具有重要意義,通過測試能夠儘可能發現並改正軟件中的錯誤,提高軟件質量。 這裏我們主要講解Go語言如何實現單元測試和性能測試。 go語言中自帶有一個輕量級的測試框架testing和自帶

原创 Golang 正則表達式(regexp)

Go內置了(regexp包)對正則表達式的支持,這裏是一般的正則表達式常規用法的例子。 示例: package main import ( "bytes" "fmt" "regexp" ) func ma