Time of Update: 2014-10-04
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。壓縮檔 package main import ( "fmt" "os" "io" "archive/tar" "compress/gzip") func main() { // file write fw, err := os.Create("tar/lin_golang_src.tar.gz
Time of Update: 2014-10-04
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。 //調用方式 func WindowVersion1() {h, err := syscall.LoadLibrary("kernel32.dll")if err != nil {fmt.Printf("Error: %s\n", err)return}defer syscall.FreeLibrary(h)proc, err := syscall.GetProcAddress(h, "
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
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。 1. golang的指標 可以將unsafe.Pointer轉換成uintptr,然後變相做指標運算 package mainimport "fmt"import "unsafe"type User struct {Id intName string}func main() {u := &User{1, "tom"}var up uintptr =
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
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。一:安裝goLang 1、下載安裝go語言。 官網下載地址: https://code.google.com/p/go/wiki/Downloads?tm=2 選擇整合與開發環境對應的.msi安裝包 ,如:go1.2.2.windows-amd64.msi 2、安裝。 注意:千萬不要在路徑有中文。否則之後將無法正常使用Go語言開發工具 由於使用msi安裝檔案,所以Go語言的環境變數已經自動化佈建好了。
Time of Update: 2014-10-04
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。 1. 手動實現append package mainimport ("fmt")func Append(slice, data []byte) []byte {l := len(slice)total_len := len(slice) + len(data)if total_len >= cap(slice) {total_len = total_len * 2newslice :=
Time of Update: 2014-10-04
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。 1. golang的函數類型轉換 一個go playground的例子,首先定義一個func類型的別名A,然後定義了A的一個方法。再定義一個函數,此函數的參數與傳回值與A相同(這樣才能顯式轉換)。在main中把此函數顯式轉換為A類型,這樣它就可以調用A的方法了。 package mainimport "fmt"type A func(int, int)func (f A)Serve()
Time of Update: 2014-10-04
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。 1. golang的log模組 golang的log模組可以很方便的建立自己的日誌記錄,包括記錄檔路徑,日誌格式等都可以自己定義。先來看一個程式: package mainimport ("fmt""log""os")func main() {logfile, err := os.OpenFile("d:\\test.log", os.O_RDWR|os.O_
Time of Update: 2014-10-04
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。[GO安裝] 本來採用 sudo apt-get install golang 安裝,後來發現這樣裝下來是go1版本,這樣後面在編譯go-sql-driver外掛程式會有問題。 後來參考參考資料2中所說,從http://www.golangtc.com/download下載對應平台的包。 安裝其實很簡單,只要簡單配置一下環境變數,在.bashrc裡增加 export GOROOT=$HOME/bin/go export
Time of Update: 2014-10-04
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。在實際的編程中,我們都希望每個對象釋放時執行一個方法,在該方法內執行一些計數、釋放或特定的要求,以往都是在對象指標置nil前調用一個特定的方法,golang提供了runtime.SetFinalizer函數,當GC準備釋放對象時,會回調該函數指定的方法,非常方便和有效。 參考: Go 語言中手動記憶體管理 go語言之初始化的建構函式 Go和C如何共用記憶體資源
Time of Update: 2014-10-04
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。這個是我用Go寫的第一個東東,可能還存在些BUG沒有測試到。這裡主要是提供一個參考。各位可以改寫成自己的風格。 在命令列下輸入如下兩條命令,進行安裝 go get github.com/male110/SimpleDb go install github.com/male110/SimpleDb
Time of Update: 2014-10-04
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。如何獲得goconfig第三方包 在git shell中使用go get github.com/Unknwon/goconfig安裝goconfig包 如何使用goconfig
Time of Update: 2014-10-04
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。package mainimport ( "bufio" "log" "os" "os/exec" "path/filepath" "strings" "time")/*擷取當前檔案執行的路徑*/func GetCurrPath() string { file, _ :=
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
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。 不同進程間的記憶體是互相獨立的,沒辦法直接互相操作對方內的資料,而共用記憶體則是靠作業系統提供的記憶體映射機制,讓不同進程的一塊地址空間映射到同一個虛擬記憶體地區上,使不同的進程可以操作到一塊共用的記憶體塊。共用記憶體是效率最高的進程間通訊機制,因為資料不需要在核心和程式之間複製。
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) {
Time of Update: 2014-10-04
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。package mainimport ("encoding/json""fmt""os")type ConfigStruct struct {Host string `json:"host"`Port int `json:"port"`AnalyticsFile string
Time of Update: 2014-10-04
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。func main() {x := 1defer func(a int) { fmt.Println("a=", a) }(x)defer func() { fmt.Println("x=", x) }()x++} 結果: x=2 a=1 說明: defer 調用所需參數在 defer 語句執行時就被已計算好了 (拷貝傳遞),閉包內則是引用,defer執行順序FIFO 數組和slice