Time of Update: 2014-10-04
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。 聲明: func funcName(input1 type1, intput2 type2) (output1 type1, output2 type2) { ……………… //可以有多個傳回值 return val1, val2 } 說明:golang中通過func來聲明一個函數,函數可以有一個或者多個參數,每個參數後面帶類型,通過,分隔;函數可以返回多個值,
Time of Update: 2014-10-04
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。 Debuggers Application programming needs good debugging support, and in this area still a lot of work needs to be done. A debugger (Oogle): support for gdb (at least version 7 is needed), the GNU debugger is being
Time of Update: 2014-10-04
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。package mainimport ("sync/atomic""unsafe")type a struct {x unsafe.Pointery uint64}func main() {p := new(a)atomic.AddUint64(&p.y, 1)} 在32位電腦上運行改程式,會出現錯誤: panic: runtime error: invalid
Time of Update: 2014-10-04
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。 在Go的net包中定義了很多類型、函數和方法用來網路編程,其中IP的定義如下: type IP []byte 輸入的IP地址需要解析,以免輸入的是錯誤格式的IP地址: func ParseIP(s string) IP 參數s可以是字串類型的ipv4或ipv6地址,如果解析錯誤會返回nil。 在Go語言的net包中有一個類型TCPConn,這個類型可以用來作為用戶端和伺服器端互動的通道,他有兩個主要的函數: func
Time of Update: 2014-10-04
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。以下是利用標準庫binary來進行編解碼 解碼 ①使用bytes.NewReader/bytes.Buffer來儲存要解碼的ascii串 ②使用binary.Read來解碼 package mainimport ( "bytes" "encoding/binary" "fmt")func main() { var pi float64 bpi
Time of Update: 2014-10-04
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。介面是一個或多個方法簽名的集合,任何類型的方法集中只要擁有與之對應的全部方法,就表示它"實現"了該介面無須在該類型上顯式添加介面聲明。 所謂對應方法,是指有相同名稱、參數列表 (不包括參數名) 以及傳回值。當然,該類型還可以有其他方法。(1)介面命名習慣以er結尾結構體。(2)介面只有方法簽名,沒有實現。(3)介面沒有資料欄位。(4)可在介面中嵌入其他介面。(5)類型可實現多個介面。
Time of Update: 2014-10-04
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。切片與資料 學golang時,書上提過從數組產生切片時,切片實際上是有一個指標指向那個數組,所以對切片和數組的操作會相互影響。 好奇的是切片是變長的,當切片超過原生數組長度後,還會保持那個指標麼,或者有更進階的方式,今天試了一下,比較失望的是,對切片執行append操作,當超過該切片的capacity時,go會分配一個新的數組給切片,兩者從此分道揚鑣。
Time of Update: 2014-10-04
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。大多數程式設計語言之上的 Web 開發架構都是遵照 MVC 的處理流程去開發 Web 應用程式:Model 部分封裝資料,Controller 部分處理商務邏輯,View 部分植入變數填充模板頁面。而大部分 Web 架構關於 MVC 的三部分都是在 Server-side 處理,比如對 View 部分的處理都是在 Server-side 通過程式動態對模版變數求值後再拼接組裝成 HTML 頁面輸出給瀏覽器去呈現。而 Go 開發
Time of Update: 2014-10-04
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。情景設定:作業系統:window7x64安裝目錄:c:/go設定環境變數: PATH=%PATH%;C:/go/bin GOROOT= C:/go GOPATH = D:/goproject 進行交叉編譯的原理是設定GOARCH(cpu架構)和GOOS(作業系統)然後執行c:/go/src/make.bat --no-clean將c:/go/src的源碼編譯成各個ARCH下對應OS的包打包好的批次檔如下:
Time of Update: 2014-10-04
這是一個建立於
Time of Update: 2014-10-04
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。雖然golang是用C實現的,並且被稱為下一代的C語言,但是golang跟C的差別還是很大的。它定義了一套很豐富的資料類型及資料結構,這些類型和結構或者是直接映射為C的資料類型,或者是用C struct來實現。瞭解golang的資料類型和資料結構的底層實現,將有助於我們更好的理解golang並寫出品質更好的代碼。 基礎類型 源碼在:$GOROOT/src/pkg/runtime/runtime.h 。我們先來看下基礎類型: /*
Time of Update: 2014-10-04
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。 最近陸續看了golang的Martini架構,也試用了,這個山寨自node.js的Express架構和最新的koa架構的golang架構, 同樣具有低耦合的特點,不過還是擔憂其效能,因為核心採用了reflect反射技術。 golang的http包用Hander、handerfuc這些來解決中介軟體的問題,比如說驗證,日誌等,採取的是一層層封裝的方式,
Time of Update: 2014-10-04
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。學習Go語言的過程中,會發現它的指標,地址,還有函數參數跟平常我們理解的不太一樣. 上代碼: package main //學習指標用法 import ( "fmt" ) func main() { var i int; // i 的類型是int型 var p *int; // p 的類型是[int型的指標] i =
Time of Update: 2014-10-04
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。 revel是典型的mvc架構,使用命令revel new [appname]建立revel工程後,預設結構為: app | controllers - mvc模式的控制器,接收用戶端request完成邏輯處理並返回渲染的結果-html,json,xml... | routes -
Time of Update: 2014-10-04
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。 golang官方編譯器安裝與配置 安裝gcc工具,因為golang有些功能是使用c寫的,所以構建golang的編譯是必須的 $ sudo apt-get install bison gawk gcc libc6-dev make 安裝mercurial工具,目的使用hg命令來提取golang的原始碼 $ sudo apt-get install mercurial
Time of Update: 2014-10-04
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。 golang的Map程式: package mainimport "fmt"type e interface{}func mult2(t e) e {switch t.(type) {case int:return t.(int) * 2case string:return t.(string) + t.(string)}return t}func add3(t e) e {switch t.(type)
Time of Update: 2014-10-04
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。https://code.google.com/p/go/source/browse/misc/vim/readme.txt 如果遇到本地編譯問題,可以使用http://gobuild.io搞定 基礎工具安裝 安裝goimports go get github.com/bradfitz/goimports 安裝gocode go get github.com/nsf/gocode 安裝godef go get
Time of Update: 2014-10-04
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。golang 自更新DDNS指令碼 一、首先你得從https://www.dnsdynamic.org/ 去註冊一個帳號,並申請一個次層網域 二、代碼 package mainimport ("fmt""io/ioutil""net/http""strings""time")//My ip infotype IpInfo struct {IpAdd
Time of Update: 2014-10-04
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。Go語言位操作執行個體 package mainimport ( "fmt")// 擷取0-n之間的所有偶數func even(a int) (array []int) { for i := 0; i < a; i++ { if i&1 == 0 { // 位操作符&與C語言中使用方式一樣 array = append(array, i)
Time of Update: 2014-10-04
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。example1 func f() (result int) { defer func() { result++ }() return 0} example2 func f() (r int) { t := 5 defer func() { t = t + 5 }() return t} example3 func f() (r int) {