1. 程式人生 > >Go語言學習筆記(五):變數作用域

Go語言學習筆記(五):變數作用域

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