Go使用詳解

1.什麼是Go
keep it simple stupid的編程語言linux

2.安裝
以Ubuntu爲例golang

# 下載安裝包
wget https://storage.googleapis.com/golang/go1.6.3.linux-amd64.tar.gz
# 解壓到 /usr/local(或者也能夠解壓到自定義目錄,就是須要對應配置一下路徑)
sudo tar -C /usr/local -xzf go1.6.3.linux-amd64.tar.gz
# 更新 PATH 環境變量,在 ~/.bashrc 中添加下面這行
export PATH=$PATH:/usr/local/go/bin
# 啓用更新
source ~/.bashrc
# 檢測版本
go version

配置$GOPATH環境變量,指定go項目的工做空間workspace,package安裝目錄編程

3.經常使用命令api

go build hello.go 就能夠編譯出最終執行文件,這樣直接執行 ./hello 就能夠看到結果
go clean 能夠清理編譯後的文件
go doc fmt 能夠查看 fmt 包的文檔
go env 顯示 Go 相關的環境變量
go fmt 利用 gofmt 工具自動排版代碼
go get 下載並安裝 package
go install 編譯並安裝 package
go list 列出 package
go run hello.go 編譯並運行 Go 程序
go test fmt 測試 fmt package
go tool 運行指定的 Go 工具,包括 addr2line, asm, cgo, compile, cover, dist, doc, fix, link, nm, objdump, pack, pprof, tour, trace, vet, yacc

4.go程序示例數組

package main

import "fmt"

func main() {
    fmt.Printf("Hello World! This is wdxtub!\n")
}

運行結果:bash

dawang:~/Go$ go run hello.go 
Hello World! This is wdxtub!

1)非註釋的第一行定義包名,每一個程序屬於一個package,每一個Go應用都包含一個名爲main的包
2)import關鍵字引入包併發

5.指針
指針表示變量的內存地址app

package main
import "fmt"
func main() {
    i := 42
    p := &i         // point to i
    fmt.Println(*p) // read i through the pointer
    *p = 21         // set i through the pointer
    fmt.Println(i)  // see the new value of i
}

運行結果:編程語言

D:\Go_WorkSpace\go_orm>go run main.go
42
21

6.數組函數

package main

import "fmt"

func main() {
    var a []int
    a = append(a, 5)
    a = append(a, 4)
    a = append(a, 10)
    for i := 0; i <len(a); i++{
        fmt.Println(a[i])
    }
    
    p := []int{2, 3, 5, 7, 11, 13}
    fmt.Println("p ==", p)
    for i := 0; i < len(p); i++ {
        fmt.Printf("p[%d] == %d\n", i, p[i])
    }
}

運行結果:

D:\Go_WorkSpace\go_orm>go run main.go
5
4
10
p == [2 3 5 7 11 13]
p[0] == 2
p[1] == 3
p[2] == 5
p[3] == 7
p[4] == 11
p[5] == 13

7.字典

import "fmt"

func main() {
    var a = make(map[string]int)
    a["a"] = 1
    a["b"] = 2
    fmt.Print(a)
}

運行結果:

D:\Go_WorkSpace\go_orm>go run main.go
map[a:1 b:2]

8.分支語句
1)if

package main

import "fmt"

func main() {
    if a := 1; a>0{
        fmt.Println(">0")
    }else{
        fmt.Println("<=0")
    }
}

運行結果:

>0

2)switch

package main

import "fmt"

func main() {
    a := 1
    switch {
    case a == 0:
        fmt.Println("is 0")
    case a == 1:
        fmt.Println("is 1")
    case a == 2:
        fmt.Println("is 2")
    default:
        fmt.Println("default")
    }
}

運行結果:

is 1
package main

import "fmt"

func main() {
    a := 1
    switch a{
    case 0:
        fmt.Println("is 0")
    case 1:
        fmt.Println("is 1")
    case 2:
        fmt.Println("is 2")
    default:
        fmt.Println("default")
    }
}

運行結果:

is 1

3)select
select是go中的一個控制結構,相似用於通訊的switch語句,每一個case必須是一個通訊操做,要麼是發送要麼是接收,select隨機執行一個可運行的case,若是沒有case可運行,它將阻塞,直到有case可運行。

9.併發與通訊
待完善

10.其餘
1)defer
函數中定義,可是在函數結束後才執行的表達式

2)panic
待定

3)recover
待定

4)iota 計數器,值會累加

相關文章
相關標籤/搜索