Time of Update: 2015-06-18
這是一個建立於
Time of Update: 2015-06-18
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。使用range可以遍曆各種資料結構中的元素。讓我們看看如何使用range遍曆一些我們已經學習過的資料結構。package mainimport "fmt"func main() { // 這裡我們使用range遍曆切片來求和 // 這種方法對數組也適用。 nums := []int{2, 3, 4} sum := 0 for _, num := range nums {
Time of Update: 2015-06-18
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。項目中使用到了go調用lua,從github上下載了aarzilli。使用的過程中發現了一個問題,修改了一下,記錄在此。之前的代碼如下:func LuaRun(jsonData []byte, index int) string {luaInfo := luaInfoArr[index]if needReload {if 0 != luaReload(luaInfo) {return
Time of Update: 2015-06-18
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。1.GOPATH問題 -- 找不到引入的packageGOPATH設定 --- 設定工作目錄 go 命令依賴一個重要的環境變數:$GOPATH1 export GOPATH=/home/apple/mygo為了方便,應該把建立以上檔案夾,並且把以上一行加入到 .bashrc 或者 .zshrc 或者自己的 sh 的設定檔中。Windows 設定如下,建立一個環境變數名稱叫做GOPATH:複製代碼代碼如下:
Time of Update: 2015-06-18
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。1.設計歸檔頁面首先在開始之前,我要說一下,有的同學在做的時候可能發現import的時候,一會是"MyTest/app/models",一會是"GBlog/app/models"
Time of Update: 2015-06-18
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
Time of Update: 2015-06-18
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。目的瞭解使用 Go 模板技術開發 Web 應用程式的。效果代碼server.gopackage main import ( "fmt" "http" "template" ) type User struct { Name string } func Register(w http.ResponseWriter, r
Time of Update: 2015-06-18
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。str := "hello世界"1. sli := []rune(str) []rune 是go內建的函數,會將字串按utf8編碼轉換為{h,e,l,l,o,世,界}對應的數字{104,101,108,108,111,19990,30028}2. byt := []byte(str) []byte 是go內建函數,會將str轉換為byte切片{104,101,108,108,111,228,184,
Time of Update: 2015-06-18
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。通過 go help testflag 可以看出,可以使用 test.run 加正在運算式來指定要測試的用例。如有以下用例在包 foo/test 中:func TestFoo(t *testing.T){}func TestFoo1(t *testing.T){}func TestAbc(t *testing.T){}go test -v foo/test 將測試所有的用例 (-v 表示輸出詳細資料,無論成功失敗)go test
Time of Update: 2015-06-18
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。Go編程——變數、函數匯出與首字母大寫標識符可被 匯出 以允許從另一個包訪問。同時符合以下條件即為已匯出標識1、標識符名的第一個字元為Unicode大寫字母(Unicode類別“Lu”);2、該標識符在包塊中已聲明或為欄位名或方法名。以程式匯入gotest/even包為例package mainimport ( "even" "fmt")func main() { i:=even.
Time of Update: 2015-06-18
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。服務端用go:(go 1.3)搭建一個tcp伺服器,用戶端用Delphi。通過socket與go進行通訊:服務端代碼:package mainimport ("fmt""net""time""strings""net/http")func main() {service := ":1200"tcpAddr, err :=
Time of Update: 2015-06-18
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。go中可以拋出一個panic的異常,然後在defer中通過recover捕獲這個異常,然後正常處理在一個主進程,多個go程處理邏輯的結構中,這個很重要,如果不用recover捕獲panic異常,會導致整個進程出錯中斷package mainimport "fmt"func main() {defer func() { //必須要先聲明defer,否則不能捕獲到panic異常fmt.Println("
Time of Update: 2015-06-18
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。package mainimport ("bytes""expvar""flag""fmt""io""log""net/http""os""os/exec""strconv""sync")// hello world, the web servervar
Time of Update: 2015-06-18
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。最近做項目的時候一直很苦惱,go的單元測試是怎麼回事,之前有看過go test xx_test.go命令進行單元測試,只知道有這麼一說。最近項目中寫了很多工具類,一直想測試一下效能和執行結果。發現完全不對。這是代碼。發現多次執行go test
Time of Update: 2015-06-17
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。《Go語言編程》一書介紹了libtask庫,可以認為這個庫等同於go的底層goroutine實現。libtask庫的channel的資料結構如下:struct Alt{ Channel *c; void *v; unsigned int op; Task *task; Alt *xalt;}; struct Altarray{ Alt **a; unsigned int n;
Time of Update: 2015-06-17
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。Go 語言支援複合類型: 數組:array 切片:slice 指標:pointer 字典:map 通道:chan 結構體:struct 介面:interface1. array 同一類型資料的集合 var arr [n]type //聲明type類型一維數組 var arr [m][n]type //聲明type類型二維數組 多維陣列以此類推 也可以用 := 聲明 arr :=
Time of Update: 2015-06-17
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。Dave Cheney 寫了一篇文章 Five things that make Go fast 從 values, inline function, Escape analysis,Groutine,Segment And Copyings Stack四個方面介紹了go中的go高效能的一些知識.首先需要知道幾個概念inline function 內嵌函式 本文會帶一些相關講解具體詳情還請Google變數Go: var
Time of Update: 2015-06-17
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。用go寫了一個web程式,測了一把效能,發現結果如下:並發數 回應時間(每100000個請求)10 16.489387100 20.436091000 51.357626 而php的同樣程式,在fastcgi方式下,測試結果如下:並發數 回應時間(每100000個請求)10 62.194685 100 81.1035871000
Time of Update: 2015-06-17
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。變數聲明Go語言不同於其他語言的地方在於:變數的類型在變數名之後。例如:C中: int a;而在Go中:var a int。此外,Go語言在定義變數時候如果沒有賦值,則為該變數賦值為其類型的零值。變數聲明有兩種方式:使用var關鍵字;或者使用:= 操作符賦值。例如:var number int //聲明變數number為int資料,此時預設複製為0 number := 2 //直接聲明變數number,同時賦值為2注意使用 :=
Time of Update: 2015-06-17
這是一個建立於