摘要:
Go語言提供了完善的單元測試支持,開發(fā)人員可以方便的編寫測試代碼,保證自己代碼的質(zhì)量。在目前的例子中,一般看到都是普通函數(shù)的例子。下面我將通過類方法的單元測試?yán)觼碚故疽幌翯o語言的魅力。首先是代碼所在的文件xml.go:package myxmlimport ( "encoding/xml")ty...
閱讀全文
摘要:
最近正在用Go語言做一個(gè)項(xiàng)目,今天在用http包讀取客戶端發(fā)過來的POST數(shù)據(jù)時(shí)遇到了一點(diǎn)小麻煩,就下面這段代碼,死活讀不到數(shù)據(jù):if r.ContentLength > 0 { var body []byte nRead, err := r.Body.Read(body) if err != nil { fmt.Println(err.Error()) }}返回的錯(cuò)誤值是EOF。通過檢查header信息,發(fā)現(xiàn)content-type是application/x-www-form-urlencoded。檢查Request信息也發(fā)現(xiàn)Conten...
閱讀全文
摘要:
func GetPostResponse(url, bodyType string, body *[]byte) (rdata []byte, err error) { b := bytes.NewBuffer(*body) var r *http.Response r, err = http.Post(url, bodyType, b) if err == nil { rbody := (*r).Body defer rbody.Close() var nRead int nRead, err = rbody.Read(rdata) if err != nil { Debug(...
閱讀全文
摘要:
Go語言里的傳值與傳引用大致與C語言中一致,但有2個(gè)特例,map和channel默認(rèn)傳引用,也就是說可以直接修改傳入的參數(shù),其他的情況如果不用指針的話,傳入的都是參數(shù)的副本,在函數(shù)中修改不會(huì)改變調(diào)用者中的變量值。簡單的做了一個(gè)例子:package mainimport "fmt"func main() { fmt.Println("Hello from Go start") var sVal string var sRef string var dVal []byte var dRef []byte var mVal map[string]string
閱讀全文
摘要:
以下語句摘自百度百科:Go語言是谷歌2009發(fā)布的第二款開源編程語言。Go語言專門針對(duì)多處理器系統(tǒng)應(yīng)用程序的編程進(jìn)行了優(yōu)化,使用Go編譯的程序可以媲美C或C++代碼的速度,而且更加安全、支持并行進(jìn)程。懷著強(qiáng)烈的好奇心,我在Windows上嘗試了自己的第一個(gè)Go程序。首先,到下面的地址下載Go語言開發(fā)環(huán)境:http://code.google.com/p/go/downloads/list下圖列出了Windows版本的Go語言開發(fā)環(huán)境:從中選取適合你系統(tǒng)的一個(gè)msi或者zip,下載完成后直接安裝即可,默認(rèn)是安裝在目錄C:\Go下面,msi的安裝程序可以幫你處理后面的環(huán)境變量設(shè)置,如果沒有設(shè)置也很
閱讀全文
摘要:
眾所周知,互斥量(mutex)是同步線程對(duì)共享資源訪問的技術(shù),用來防止下面這種情況:線程A試圖訪問某個(gè)共享資源時(shí),線程B正在對(duì)其進(jìn)行修改,從而造成資源狀態(tài)不一致。與之相關(guān)的一個(gè)術(shù)語臨界區(qū)(critical section)是指訪問某一共享資源的代碼片段,并且這段代碼的執(zhí)行為原子(atomic)操作,...
閱讀全文