Time of Update: 2014-10-04
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。前面大概說過bison與yacc的文法,那麼其實go也是用bison來實現的,下面來說說怎麼閱讀go語言原始碼。要看代碼首先得找到代碼的入口,怎麼找呢?你可能首先想到grep main是的,一般來說這是一個沒有爭議的辦法,但是對於go語言來說,這個辦法對,也不對。怎麼說呢?我們用gdb來進行debug就會看到所有的go語言程式的入口居然都在src/lib9/main.c裡的main函數。#include #define
Time of Update: 2014-10-04
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。 1.下載ctags 網站被牆,點此下載 下載後的exe檔案隨便放在哪個目錄,將目錄添加到 環境變數 path中.然後 cmd,輸入ctags --help,顯示一堆協助文字,說明就可以了。 3. 在sublime text 2中安裝CTAGS, ctrl + shift + p輸入CTAGS斷行符號就行了,不知道怎麼安裝包的請百度。 4. 在sublime text 2開啟$GOROOT下src\pkg目錄(
Time of Update: 2014-10-04
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。 var和const :變數和常量的聲明 var varName type 或者 varName : = value package and import: 匯入 func: 用於定義函數和方法 return :用於從函數返回 defer someCode :在函數退出之前執行 go : 用於並行 select 用於選擇不同類型的通訊 interface 用於定義介面
Time of Update: 2014-10-04
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。 Go官方http://golang.org/Go代碼http://code.google.com/p/go/http://code.google.com/p/gomingw/downloads/listGo 語言中文翻譯項目http://code.google.com/p/golang-china/Go語言中文論壇http://bbs.golang-china.org/線上學習http://go-tour-zh.appsp0t.
Time of Update: 2014-10-04
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。在傳統的伺服器編程模型中,我們會為每一個請求分配一個線程,請求結束後終止該線程,或者把線程放回線程池。 Java 的 Servlet 就屬於這種模型的典型。對於 PHP, Ruby, Python 這些語言,要麼對於多線程支援不好,要麼在多線程下表現不好,通常我們會為每個請求分配一個進程,但整體模型都差不多。通常我們的請求並不是一直在消耗CPU,
Time of Update: 2014-10-04
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。幾乎所有代碼都來自: http://jan.newmarch.name/go/ 感謝該作者 /* IP */package mainimport ("fmt""net""os")func main() {if len(os.Args) != 2 {fmt.Fprintf(os.Stderr, "Usage: %s ip-addr\n", os.Args[0])os.
Time of Update: 2014-10-04
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。簡單介紹一下之前的整個職業生涯,挺典型的,工程師 –> 資深工程師 –> 架構師 –> 專案經理 –>
Time of Update: 2014-10-04
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。go語言值傳遞與址傳遞:值傳遞是對源結構體拷貝的操作;址傳遞是對源結構體的操作;package mainimport ("fmt")type BigStruct struct {C01 uint64}func Invoke1(a *BigStruct) uint64 {a.C01++return a.C01}func Invoke2(a BigStruct) uint64 {a.C01++return a.C01}
Time of Update: 2014-10-04
這是一個建立於
Time of Update: 2014-10-04
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。 如果一隻鳥長得像鴨子,走起路來像鴨子,叫起來也像鴨子,那麼就把這隻鳥叫做鴨子; golang中的interface就是上面這個意思,如果你定義了一個struct,它裡面的方法和屬性都和interface中的一樣,那麼可以說,這個struct實現這個interface,上代碼 package mainimport ("fmt")type s struct { //定義一個s類型,有一個屬性i是int的i
Time of Update: 2014-10-04
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。SublimeText3搭建go語言開發環境(windows) 下載並解壓: Sublime Text Build 3021.zip註冊: 盡量不要去破解 安裝Package Control 命令列進入SublimeText3的安裝目錄運行以下命令 cd Data/Packages/ git clone https://github.com/wbond/sublime_package_
Time of Update: 2014-10-04
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。切片是對某個容器不同區間範圍的引用。 a := []int{0,0,0,0,0} 這行代碼實際上包含了兩個邏輯步驟: 1.建立了一個容量為5的容器 2.a引用容器[0:5]的區間,a[1]=1即設定變容器第二個位置的值為1。 b := a[0:2] 這行代碼並沒有建立新的容器,只是在原有容器上增加了一個新的引用b,b可以修改容器的[0:2]區間內的值,由於a也可以修改這個區間的值,所以對b做出賦值操作也會反應到a上。
Time of Update: 2014-10-04
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。匯總我的go語言上機測試代碼,測試環境win7、go 1.1 beta(32位),GOROOT = E:\opensource\go\go測試代碼下載地址 hellogo.zip,包含下面的代碼:client.go -- net用戶端gargs.go -- 取命令列字串gchannel.go -- 測試channelgcommand.go --
Time of Update: 2014-10-04
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。goPy 是一個新的開源項目,實現了用 Go 語言來編寫 CPython 擴充。範例程式碼:01package simple02 03import (04 "fmt"05 "gopy"06)07 08func example(args *py.Tuple) (py.Object, error) {09 fmt.Printf("simple.example: %v\n"
Time of Update: 2014-10-04
這是一個建立於
Time of Update: 2014-10-04
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。package mainimport( //"fmt" "time")var c = make(chan int,100)func gofunc(){ time.Sleep(0) c<-0}func main(){ for i:=0;i<10;i++{ for j:=0;j<10000;j++{ go gofunc(
Time of Update: 2014-10-04
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。go 語言的一個很大的優勢就是可以方便地編寫並發程式。go 語言內建了 goroutine 機制。這是一種類似 coroutaine(協程) 的東西。但是又不完全相同。比如這個例子:package mainimport ("fmt""strconv")func main() {ch := make(chan int)task("A", ch)task("B", ch)fmt.Printf("begin\n")運行以後,發現會 A
Time of Update: 2014-10-04
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。 現在go語言ms經常被人提,我去湊熱鬧看了看~~go 語言 windows 下 的編譯器可以去http://code.google.com/p/gomingw/downloads/list 下載下載解壓配置環境變數“環境變數”(我的電腦->進階系統設定->環境變數),在系統變數的標籤下,依次建立編輯如下幾個索引值對: (1). 建立 變數名:GOBIN 變數值 :c:\go\bin (2)
Time of Update: 2014-10-04
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。更新 go1.1正式版 已經在北京時間5月14日10點左右發布 從google網站的go下載頁找到對應的包,我這裡是linux64位,所以我下載go1.1.linux版 本文參考自官方手冊 確定環境 go在運行時會讀取環境變數,如未讀到相關環境變數,則按預設值運行 例如${GOROOT}表示為安裝位置,如未正確設定,會造成運行時找不到對應檔案 在家目錄(~)下的.bashrc檔案最後加入以下內容$ vi
Time of Update: 2014-10-04
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。這些東西是平時遇到的, 覺得有一定的價值, 所以記錄下來, 以後遇到類似的問題可以查閱, 同時分享出來也能方便需要的人, 轉載請註明來自RingOfTheC[ring.of.the.c@gmail.com] 這幾天看go文檔時看到這麼一段話: Go is a new language. Although it borrows ideas from existing languages, it has