型別
go是**靜態型別**語言,不能在運行期改變變數型別,
變數定義
- 使用var定義變數,自動初始化為零值;
- 如果提供初始值,可省略變數型別;
- 函式內部可使用:=定義變數,
var x int // 自動初始化為0
var f float32 = 1.6
var s = "abc"
func main(){
x := 123
}
多變數
- 可一次定義多個變數;
- 多變數賦值時,先計算所有相關值,然后再從左到有依次賦值,
var x, y, z int
var s, n = "abc", 123
data, i := [3]int{0, 1, 2}, 0
i, data[i] = 2, 100 //(i=0) -> (i=2), (data[0]=100)
const
- 常量值必須是編譯期可確定的數字、字串、布林值
const (
s = "abc"
x // x = "abc" 常量組中,如不提供型別和初始值,那么與上一常量相同
b = len(a)
c = unsafe.Sizeof(b) // 可以使用len, cap, unsafe.Sizeof等編譯器可確定結果的函式回傳值
)
列舉
const (
Sunday = iota // 0
Monday // 1
..
)
const (
_ = iota // iota =0
KB int64 = 1 << (10 * iota) // iota = 1
MB // 與KB運算式相同,但iota = 2
GB
)
變數默認值
| 型別 | 默認值 | 長度 |
|---|---|---|
| bool | false | 1 |
| byte | 0 | 1 |
| rune | 0 | 4 |
| int/uint | 0 | - |
| float* | 0.0 | - |
| string | "" | - |
| slice / map / channel | nil | - |
| interface/function | nil | - |
| array / stuct | - | - |
型別轉換
- 不支持隱式轉換
var b byte = 100
var n int = (int)(b) // 顯示轉換,建議(type)
a := 100
if a { // 不能使用其他型別當bool使用
println("true")
}
指標
與c類似,略,
陣列
var a [4]int = [4]int{1,2} //未初始化的元素將被賦為零值
var b = [...]string{"hello"} //長度為1
c := [...]int{99:-1} //定義了100個元素,最后一個初始化為-1
說明
- 如果陣列的元素型別是可以互相比較的,那么陣列型別也可以互相比較
- 當兩個陣列的所有元素相等,那么陣列相等
運算式
range
[注意事項](https://studygolang.com/articles/12958)
switch
- 可省略break,默認自動終止,
x := []int{1, 2, 3}
i := 2
switch i {
case x[1]:
println("a") // 自動終止
case ..
}
switch { // 可省略條件
case x > 0 :
...
}
switch i := 2; { // 帶初始化陳述句
...
}
- go語言圣經
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/69304.html
標籤:Go
上一篇:關于繞過MD5校驗的問題
