https://godoc.orgpython
https://github.com/avelino/awesome-gogit
命令源碼文件(main)與庫源碼文件處同一代碼包中,不能go build /go install,github
同一代碼包中能夠有多個命令源碼文件,能夠go run,但不能build/install,因此一個命令一個包,build 生成在當前目錄,intall 生成在bin或/pkg目錄golang
若是文件名與package名不一樣,文件第一行必定要package xxx數組
import(app
. 「xx」 #能夠使用xx中的內容,就不用前綴了函數
_ 「xx」 #只觸發了init操做,什麼也沒導入ui
)編碼
func init(){} 包初始化方法 在main()以前完成,且只執行一次spa
全局變量初始化->init->main
類型斷言 x.(t) t爲interface
interface{}(123).(int)
[…]string{「go」,」python」} #不寫長度有,由初始值肯定
go 語方中中只有傳值,沒有傳引用
delete(mapname,key) #刪除map的key
go test #文件爲xx_test.go ; testxx(t *testing.T,xx)
GOROOT /GOPATH
go get 下載到gopath指定第一個,並完成構建和安裝
export PATH=$PATH:${GOPATH//://bin:}/bin export GOBIN=
go env
https://github.com/hyper-carrot/go_command_tutorial
golang有兩個特殊的包名稱 all,std
all 表明GOPATH中全部工做區路徑中全部代碼包,std 標準庫中的全部代碼
import/package
chan/func/interface/map/struct/const/type/var
go/select/break/case/continue/defalut/defer/else/fallthrough/for/goto/if/range/return/switch
:= //申明一個變量,同時賦值,只能在函數體內用
切片的長度就是它所包含的元素個數。
defer 語句會將函數推遲到外層函數返回以後執行
切片的容量是從它的第一個元素開始數,到其底層數組元素末尾的個數
https://go-zh.org/pkg/builtin/
for 循環的 range 形式可遍歷切片或映射
godoc -http=:8080
4form
r.Form["username"]也可寫成r.FormValue("username")。調用 r.FormValue 時會自動調用
r.ParseForm,因此沒必要提早調用。r.FormValue只會返回同名參數中的第一個,若參數不存
在則返回空字符串
getint,err:=strconv.Atoi(r.Form.Get("age"))
//中文
if m, _ := regexp.MatchString("^[\\x{4e00}-\\x{9fa5}]+$", r.Form.Get("realname")); !m {
return false
}
maps, slices 和 channels 引用語義,用make分配空間
struct,array等值類型,用new分配空間
x := []int{1, 2, 3}
y := []int{4, 5, 6}
x = append(x, y...)
int( x ) //x 轉爲int
<-chan int (x ) // x轉爲chan int,再取數據
(<-chan int )(x ) //x 轉爲只能取數據的chan int
Go語言的字符串是UTF-8編碼,其底層使用4個字節表示,也就是32 bit
func (x type) string() string{} // 定義String()方法,自定義了格式化指令%v的輸出