- 格式化時(shí)間不是用yyyy MM DD HH mm ss sss等在其他語(yǔ)言中常見的符號(hào)贪染。
而是:
2006-01-02 15:04:05
now := time.Now()
nowRight := now.Format("2006-01-02 15:04:05")
完整UTC為:2006-01-02T15:04:05-07:00
- map 每次遍歷都是無(wú)序的。據(jù)說(shuō)是為了讓開發(fā)者不要依賴不是很可靠的map有序遍歷蚜迅,索性改成了無(wú)序的敢艰。
正確的做法是獲取到key诬乞,然后排序key,然后在遍歷map:
var keys []int
for k,_ :=range map{
keys = append(keys, k)
}
sort.Ints(keys)
for _,v:=range keys{
fmt.Printf("%d-%d\n",v,aa[v])
}
- slice 不初始化不能賦值钠导,但是用append可以
var s []int
s[0]=100
//報(bào)錯(cuò)震嫉,runtime error: index out of range
s=append(s,100)
//正確通過,append里面可能對(duì)s做的初始化
go get [-u -v]
go build : 編譯出可執(zhí)行文件
go install : go build + 把編譯后的可執(zhí)行文件放到GOPATH/bin目錄下
go get : git clone + go installGolang不支持函數(shù)的重載
可以多個(gè)變量一起賦值牡属,利用這個(gè)特性票堵,可以很簡(jiǎn)單的實(shí)現(xiàn)斐波拉契數(shù)列
a:=1
b:=1
for i:=0;i<10;i++{
fmt.Println(a)
a,b=b,a+b
}
- Golang中的方法與其它語(yǔ)言中不一樣,其它語(yǔ)言一般直接定義在Class 或者struct中逮栅,在Golang中是分離的悴势。
func (recevier type) methodName(參數(shù)列表)(返回值列表){}
recevier type 是不是指針也有很大影響
func (i *integer) set(val integer){
*i = val
}
var j integer
j.set(10)
- 讀取chan的兩種方式
close(ch)
//第一種:
for{
b,ok:=<-ch
if !ok{
fmt.Println("chan is closed!")
break
}
fmt.Println(b)
}
//第二種:
for v:=range ch {
fmt.Println(v)
}