變量
變量是內存當中一段空間的抽象描述。變量的類型明確了空間的大小以及空間如何解析。
Go中的變量類型
1
| bool byte complex64 complex128 error float32 float64 int int8 int16 int32 int64 rune string uint uint8 uint16 uint32 uint64 uintptr
|
變量的聲明與賦值
方式1
1 2 3 4 5 6 7 8 9
| package main
import "fmt"
func main() { var x string x = "Hello World" fmt.Println(x) }
|
方式2
注意,x := “Hello World” 等價於 var x = “Hello World”
自動推斷類型,並且必須在函數體內部
1 2 3 4 5 6 7 8
| package main
import "fmt"
func main() { x := 1 fmt.Println(x) }
|
多樣的賦值
1 2 3 4 5 6 7 8
| var i int var U, V, W float64 var k = 0 var x, y float32 = -1, -2 var ( i int u, v, s = 2.0, 3.0, "bar" )
|
例子:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| package main
import "fmt"
func main(){
var a,b string= "jonson","jackson"
c,d := true,false
e,f,g := "jonson",true,123 fmt.Println("a:",a) fmt.Println("b:",b)
fmt.Println("c:",c) fmt.Println("d:",d)
fmt.Println("e:",e) fmt.Println("f:",f) fmt.Println("g:",g) }
|
零值問題
變量初始化不賦值的情況,默認爲空。
例子:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| package main import "fmt" func main() { var a int var b string var c float64 var d bool
fmt.Printf("%v \n", a) fmt.Printf("%v \n", b) fmt.Printf("%v \n", c) fmt.Printf("%v \n", d) fmt.Println() }
|
常量
常量一旦聲明不能改變,並且常量必須賦予初始值。此代碼無效func main() {const x int}
有效:
1 2 3 4 5 6 7 8 9 10 11
| package main
const ( m = 1 n = 2 ) func main(){
const k = 8 }
|
iota 使用
iota從0開始循環
1 2 3 4 5 6 7 8 9 10 11 12 13
| const ( a = iota b = iota c = iota d = iota ) 等價於: const ( a = iota b c d )
|
使用案例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| package main
import "fmt"
func main() { const ( a = iota b c d = "ha" e f = 100 g h = iota i ) fmt.Println(a,b,c,d,e,f,g,h,i) }
|
變態iota
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| package main
import "fmt" const ( i=1<<iota j=3<<iota k l )
func main() { fmt.Println("i=",i) fmt.Println("j=",j) fmt.Println("k=",k) fmt.Println("l=",l) }
|
結果:
iota表示從0開始自動加1,所以 i=1<<0, j=3<<1(<<表示左移的意思),即:i=1,j=6,這沒問題,關鍵在k和l,從輸出結果看 k=3<<2,l=3<<3。
簡單表述:
• i=1:左移 0 位,不變仍爲 1;
• j=3:左移 1 位,變爲二進制 110, 即 6;
• k=3:左移 2 位,變爲二進制 1100, 即 12;
• l=3:左移 3 位,變爲二進制 11000,即 24。