Go語言學習筆記(五):變數作用域
阿新 • • 發佈:2018-12-12
Go語言變數型別
Go語言變數型別分為三種:區域性變數,全域性變數,形式引數
型別 | 定義 | 描述 |
區域性變數 | 在函式內定義的變數 | 作用域只在函式體內 |
全域性變數 | 在函式外定義的變數 | 全域性變數可以在整個包甚至外部包(被匯出後)使用 |
形式引數 | 函式定義中的變數 | 形式引數會作為函式的區域性變數來使用 |
區域性變數
在函式體內宣告的變數稱之為區域性變數,它們的作用域只在函式體內,引數和返回值變數也是區域性變數。
例項
package main import ( "fmt" ) func main() { var a int = 6 var b int = 9 //var c int c := a + b fmt.Printf("結果: a = %d, b = %d and c = %d\n", a, b, c) }
輸出結果:
結果: a = 6, b = 9 and c = 15
全域性變數
在函式體外宣告的變數稱之為全域性變數,全域性變數可以在整個包甚至外部包(被匯出後)使用。
例項
package main
import (
"fmt"
)
var c int
func main() {
var a int = 6
var b int = 9
//var c int
c = a + b
fmt.Printf("結果: a = %d, b = %d and c = %d\n", a, b, c)
}
輸出結果:
結果: a = 6, b = 9 and c = 15
Go語言中全域性變數可以和區域性變數同名,但是在函式中會優先使用區域性變數
例項
package main
import (
"fmt"
)
var c int
var d int
func main() {
var a int = 6
var b int = 9
var d float32 = 3.14
//var c int
c = a + b
fmt.Printf("結果: a = %d, b = %d, c = %d ,d = %f\n", a, b, c, d)
}
輸出結果
結果: a = 6, b = 9, c = 15 ,d = 3.140000
形式引數
形式引數會作為函式的區域性變數來使用。
例項
package main
import (
"fmt"
)
var a int = 13
func main() {
var a int = 6
var b int = 9
fmt.Printf("main()函式中 a = %d\n", a);
c := sum( a, b);
fmt.Printf("main()函式中 c = %d\n", c);
}
func sum(a,b int) int{
fmt.Printf("sum() 函式中 a = %d\n", a);
fmt.Printf("sum() 函式中 b = %d\n", b);
num := a + b
return num
}
輸出結果
main()函式中 a = 6
sum() 函式中 a = 6
sum() 函式中 b = 9
main()函式中 c = 15
初始化區域性和全域性變數
不同型別的區域性和全域性變數預設值是不同的,系統分別為其設定了預設值
資料型別 | 初始化預設值 |
int | 0 |
float32 | 0 |
pointer | nil |