go語言 全局變量和局部變量實例
一、局部變量
1 定義在{}裡面的變量時局部變量,隻能在{}裡面有效
2 執行到定義的那句話,開始分配內存空間,離開作用域自動進行釋放
3 作用域,就是變量作用的范圍
package main import "fmt" func test() { i := 111 fmt.Println("i=", i) } func main() { test() { i := 10 fmt.Printf("i=%v\n", i) } // i=12 錯誤 if flag := 3; flag == 3 { fmt.Println("flag=", flag) } //fmt.Println("flag=", flag) 錯誤 }
二、全局變量
1 定義在函數外部的變量稱為全局變量
2 全局變量在任何地方都可以進行使用
package main import "fmt" func test() { fmt.Println("a= ", a) } var a int func main() { a = 12 fmt.Println("a= ", a) test() }
三、不同作用域中,同名變量
1 不同的作用域,允許定義同名的變量
2 使用變量的原則,就近原則,如果局部變量沒有,就去全局變量中找
package main import "fmt" //定義一個全局變量 var a byte func main() { var a int fmt.Printf("1: a type is %T\n", a) //int { var a float32 fmt.Printf("2: a type is %T\n", a) // float32 } test() } func test() { fmt.Printf("3: a type is %T\n", a) //uint8 }
補充:golang全局變量的坑-盡量別用全局變量
看圖片吧~
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。如有錯誤或未考慮完全的地方,望不吝賜教。