爭取在入職前把《學習Go語言》這個文檔看完,把學習的筆記寫在博客中,做爲記錄,方便之後查閱。git
練習的代碼都放在我本身的GitHub中,地址爲:
https://github.com/poemqiong/GoExercisesgithub
例如要查看unicode/utf8包的內容
godoc unicode/utf8 | less數組
pakckage main必須首先出現,而後是import,而後是其餘全部內容。當Go程序在執行時,首先調用的函數是main.main().app
編譯:go build test.go
直接運行:go run test.goless
若是兩個(或更多)語句放在一行書寫,它們必須用分號(;)分割,通常狀況下,不須要在行末加分號。函數
Go的變量類型不是int a,而是a int。聲明和賦值是兩個過程。學習
不一樣類型變量的賦值
(1)
var a int
var b bool
a = 15
b = false
(2)
var {ui
a int b bool
}
(3)指針
:= 15code
:= false
相同類型變量的賦值
a, b := 20, 16
_, b := 34,35
注意:
_是一個特殊的變量名,任何賦給它的值都會被拋棄。
Go的編譯器會對聲明卻未使用的變量報錯。
混合使用不一樣類型的變量會引發編譯器的錯誤。
在Go中,常量在編譯時被建立,只能是數字、字符串或者布爾值。
Go中,字符串賦值以後是不能修改的。若是要修改,須要先轉換爲rune數組(rune是int32的別名)。
兩個字符串相加應該寫爲
s := "a" +
"b"
而不能寫作:
s := "a"
"b"
由於Go編譯器會自動在每一行末尾加上分號。
運算符的優先級,第一行最高,最後一行最低:
/ % << >> & &^
= | ^
== != < <= > >=
<-
&&
||
須要注意的是:
&^表示位清除
沒有邏輯非!
Go不支持運算符重載
if else
switch
goto
for
break and continue
range(迭代器)
array由[n]<type>定義,n標示array的長度,而<type>標示類型。賦值後,不能修改數組的大小,並且全部元素的類型相同。
一維數組:
a := [...]int{1,2,3}
a := [3]int{1,2,3}
二維數組:
a := 3int {{1,2}, {3,4}, {5,6}}
slice與array相似,可是能夠添加新的元素,slice是一個指向array的指針,是引用類型(引用類型使用make建立)。
slice老是與一個固定長度的array成對出現。
sl := make([]int, 10)
s0 := []int{0,0}
s1 := append(s0, 2, 3, 4)
函數copy從源slice src複製元素到目標dst,而且返回複製的元素的個數。
源和目標能夠重疊。
元素複製的數量是len(src)和len(dst)中的最小值。
map[<from type>]<to type>
當只須要聲明一個map時,使用make的形式:mdays := make(map[string]int)
mdays["Jan"] = 31
v, ok := mdays["Jan"]
若存在的話,ok爲true
delete(mdays, "Jan")
因爲第一章是簡介,講的內容比較雜,相信在後續的使用中會愈來愈熟悉這些細節。