Time of Update: 2016-09-07
標籤:from:
Time of Update: 2016-09-06
標籤:學習筆記 go golang Go程式是通過 package來組織的(與python的庫類似)只有package名稱為main的包可以包涵main函數(同時main函數也是一個程式的入口)一個可執行程式有且僅有一個main包通過import關鍵字來引入其他非main包通過const關鍵字來進行常量的定義通過在函數體外部使用var關鍵字來進行全域變數的聲明與賦值通過type關鍵字來進行結構(
Time of Update: 2016-09-10
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。如題,post發送資料有幾種形式,form和流是最常用的。特別是在程式裡使用httpclients,一般都算通過流發送。在php裡,是通過php://input來擷取的。在gin中,可以通過c.Request.Body.Read(buf)。具體代碼如下:package mainimport
Time of Update: 2016-09-07
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。我們在C語言中,struct中聲明函數,而Go中則不能再struct中聲明函數。而是採用另外一種形態存在,Go中叫method。method的概念method是附屬在一個給定的類型上,文法和函數的聲明文法幾乎一樣,只是再func後面增加了一個recevier(也就是method所依從的主體)method的文法格式func (r ReceiverType) funcName(parameters)
Time of Update: 2016-09-06
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。項目組織圖yishiyaonie:go liuhanlin$ pwd/Users/liuhanlin/qiniuwork/goyishiyaonie:go liuhanlin$ lsaone public qbox所以設定gopath為pwd的內容:/Users/liuhanlin/qiniuwork/go aone為新項目,public為公用的go庫,qbox為第三方庫。提倡的寫法yishiyaonie:go
Time of Update: 2016-09-08
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。chap04 並發編程1.Go語言支援語言層級輕量層級線程,稱之為goroutine,由Go語言運行時runtime管理。如下多線程執行個體:package mainimport ( "fmt"; "sync"; "runtime" )var counter int = 0func Count(lock
Time of Update: 2016-09-06
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。Golang中的覆蓋率測試golang中提供了不少工具鏈,可以使用它們方便的進行單元測試、分析效能瓶頸,提供運行時資訊等,總而言之是非常有用的。go test這個工具大家用的應該比較多,之前我使用也大多是用來做單元測試的,go中做單元測試非常的方便,然而我忽視了覆蓋率測試。單元測試覆蓋了多少代碼呢?golang的go test工具其實還支援顯示覆蓋率,最簡單的用法就是執行go test -c -covermode=count
Time of Update: 2016-09-08
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。簡介(Introduction) JSON(JavaScript Object Notation)是一種簡單的資料交換格式。文法上和JAVASCRIPT的對象及列表相似。這是web前後端和JavaScript程式最常用的資料傳遞方式,並且其他很多地方也使用JSON。在JSON的首頁(json.org)上,對JSON的標準做了非常清晰,簡潔的定義。 JSON (JavaScript Object Notation) is a
Time of Update: 2016-09-12
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。第一篇go database/sql 源碼分析 的文章對其作者(Brad Fitzpatrick大神 memcached的作者 go語言項目群組成員)給予高度評價,但是個人認為go database/sql
Time of Update: 2016-09-11
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Examination Problem 質數(prime number)又稱素數,有無限個。質數定義為在大於1的自然數中,除了1和它本身以外不再有其他因數的數稱為質數。 判斷101-200之間有多少個素數,並輸出所有素數。~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Time of Update: 2016-09-08
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。go 結構體go 結構體定義賦值Factory 方法Go 通過結構體的形式支援使用者自訂類型。結構體是複合類型(composite types),當需要定義一個類型,它由一系列屬性群組成,每個屬性都有自己的類型和值的時候,就應該使用結構體,它把資料聚集在一起。然後可以訪問這些資料,就好像它是一個獨立實體的一部分。定義結構體定義的一般方式如下:type Identifier struct { field1 type1
Time of Update: 2016-09-08
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。與c文法不同之處: 1. 參數列表中各個參數類型相同時可以唯寫出最後一個,如:add(x, y int) int { return x +y } 2. 類型在參數名(變數/函數)後面 3. 函數的左大括弧要跟函數名同一行,否則編譯不過 4. 函數定義要先寫關鍵字func在函數開頭(函數外的每個語句都要以func、var等等關鍵字開頭) 5. 在包或者函數層級聲明變數時要用var語句 6. 函數支援多值返回,如:func swap(
Time of Update: 2016-09-10
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。package mainimport ( "encoding/json" "fmt" "os")type ConfigStruct struct { Host string `json:"host"` Port int `json:"port"`
Time of Update: 2016-09-10
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。func Listen(net, laddr string) (Listener, error) //返回在一個本網地址laddr上監聽的Listener。網路型別參數net必須是面向流的網路:"tcp"、"tcp4"、"tcp6"、"unix"或"unixpacket"。具體參見Dial函數擷取laddr的文法。type Listener
Time of Update: 2016-09-10
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。概述這裡存在一種情境, 當一個快取服務由多個伺服器組共同提供時, key應該路由到哪一個服務.這裡假如採用最通用的方式key%N(N為伺服器數目), 這裡乍一看沒什麼問題, 但是當伺服器數目發送增加或減少時, 分配方式則變為key%(N+1)或key%(N-1).這裡將會有大量的key失效遷移,如果後端key對應的是有狀態的儲存資料,那麼毫無疑問,這種做法將導致伺服器間大量的資料移轉,從而照成服務的不穩定.
Time of Update: 2016-09-10
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。func compare(spath, dpath string) bool { sinfo, err := os.Lstat(spath) if err != nil { return false } dinfo, err := os.Lstat(dpath) if err != nil { return false } if sinfo.Size() !=
Time of Update: 2016-09-07
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。一、匯入庫: go get github.com/demdxx/gocast二、測試代碼: // main.gopackage mainimport ( "fmt" "reflect" "github.com/demdxx/gocast")type AccessRegion struct { region_id int64 `tag:
Time of Update: 2016-09-10
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。Try using this URL as a Eclipse Software Site:https://raw.githubusercontent.com/GoClipse/goclipse.github.io/0.16.0/releases/It should allow you to install 0.16.0 (or a diff version if you change the
Time of Update: 2016-09-07
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。//本程式 主要功能是把A檔案夾下的檔案與B目錄下檔案對比,如果找到就覆蓋到B相應的目錄下。 // 用法: merge A目錄 B目錄 // merge.gopackage mainimport ( "flag" "fmt" "os" "path/filepath" "strings" "time
Time of Update: 2016-09-07
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。golang反射來自Go AST(Abstract Syntax Tree). reflect操作更多像traverse AST.t := reflect.TypeOf(obj)使用TypeOf()擷取類型資訊.v := reflect.ValueOf(obj)使用ValueOf擷取值資訊如果t是Array, Slice, Map, Chan或Pointer,可以繼續繼續使用Elem()方法擷取其元素的更多資訊.Elem():