掌握常見數據類型的使用數組
var v1 bool //默認值爲false v1 = true v2 := (1 == 2) // v2也會被推導爲bool類型
整型:app
int八、byte、int1六、int、uint、uintptr等。函數
類型 | 長度(字節) | 取值範圍 |
---|---|---|
int8 | 1 | -128 ~ 127 |
uint8(即byte) | 1 | 0 ~ 255 |
int16 | 2 | -32 768 ~ 32 767 |
uint16 | 2 | 0 ~ 65 535 |
int32 | 4 | -2 147 483 648 ~ 2 147 483 647 |
uint32 | 4 | 0 ~ 4 294 967 295 |
int64 | 8 | -9 223 372 036 854 775 808 ~ 9 223 372 036 854 775 807 |
uint64 | 8 | 0 ~ 18 446 744 073 709 551 615 |
int | 平臺相關 | 平臺相關 |
uint | 平臺相關 | 平臺相關 |
uintptr | 同指針 | 在32位平臺下爲4字節,64位平臺下爲8字節 |
int和int32在Go語言裏被認爲是兩種不一樣的類型,編譯器也不會幫你自動 作類型轉換學習
支持的位運算符:ui
運算 | 含義 | 樣例 |
---|---|---|
x << y | 左移 | 124 << 2 // 結果爲496 |
x >> y | 右移 | 124 >> 2 // 結果爲31 |
x ^ y | 異或 | 124 ^ 2 // 結果爲126 |
x & y | 與 | 124 & 2 // 結果爲0 |
x|y | 或 | 124|2 // 結果爲126 |
^x | 取反 | ^2 // 結果爲3 |
浮點類型:指針
float3二、float64。code
不能直接用==來判斷兩個浮點數是否相等索引
能夠這樣判斷浮點型的大小:three
import "math" // p爲用戶自定義的比較精度,好比0.00001 func IsEqual(f1, f2, p float64) bool { return math.Fdim(f1, f2) < p }
複數類型:字符串
complex6四、complex128。
複數實際上由兩個實數(在計算機中用浮點數表示)構成,一個表示實部(real),一個表示 虛部(imag)。若是瞭解了數學上的複數是怎麼回事,那麼Go語言的複數就很是容易理解了。
複數表示
複數表示的示例以下:
var value1 complex64 // 由2個float32構成的複數類型 value1 = 3.2 + 12i value2 := 3.2 + 12i // value2是complex128類型 value3 := complex(3.2, 12) // value3結果同 value2
實部與虛部
對於一個複數z = complex(x, y),就能夠經過Go語言內置函數real(z)得到該複數的實 部,也就是x,經過imag(z)得到該複數的虛部,也就是y。
go語言不支持隱式轉換(對比Java的隱式轉換)
**字符串:**string。
var str string // 聲明一個字符串變量 ,默認值爲""
數組聲明:
//數組定義 var a[3]int //聲明並初始化默認值爲0 a[0] = 1 //給第一個數賦值爲1 b := [3]int{1,2,3} //聲明同時初始化 c := [2][2]int{1, 2}, {3, 43} //多維數組初始化 d := [...]int{1,2,3,4,5}//自動匹配長度
數組遍歷:
arr3 := [...]int{1, 3, 4, 5} for i := 0; i < len(arr3); i++ { t.Log(arr3[i]) } //i 是索引,不使用索引用_代替 for i, e := range arr3 { t.Log(e,i) }
數組的截取:
a[開始索引(包含),結束索引(不包含)]
a := [...]int{1, 2, 3, 4, 5} a[1:2] //結果: 2 a[1:3] //結果: 2,3 a[1:Len(a)] //結果: 2,3,4,5 a[1:] //結果: 2,3,4,5 a[:3] //結果: 1,2,3
相似於Java中的集合List
切片聲明:
//切片定義 var s0 [] int //初始長度爲0 s0 = append(s0,1)//填充數據 s := []int{} s1 := []int{1,2,3} /* 格式: type,len,cap 其中len個元素會被初始化爲默認零值,未初始化元素不能夠訪問,既,索引爲0,1,2的值初始化爲0能夠訪問,3,4不能夠 訪問 cap按2倍增加(相似於Java中list長度的增加因子) */ s2 := make([]int,3,5)/
map的聲明:
var 變量名 map[key類型] value類型
m := map[string]int{"one": 1, "two": 2, "three": 3} m1 :=map[string]int{} m1["one"]=1//向容器中存入數據 m2 :=make(map[string]int, 100 )//設置容量 //判斷值是否存在 if v, ok := m1["one"]; ok { //值存在 }
注意:
當key不存在時:會輸出默認值
當key對應的值不存在時:也會返回默認值
map的遍歷:
m1 := map[int]int{1: 1, 2: 4, 3: 9} //a是key b是value for a, b := range m1 { t.Log(a, b) } //k是key for k := range m1 { t.Log(k) }