首頁 >後端開發 >Golang >Go語言的變數有幾種類型

Go語言的變數有幾種類型

青灯夜游
青灯夜游原創
2023-01-10 11:34:202638瀏覽

變數有三種:1、函數內定義的變數稱為局部變量,其作用域僅限於函數內部;局部變數不是一直存在的,它只在定義它的函數被呼叫後存在,函數呼叫結束後這個局部變數就會被銷毀。 2.函數外定義的變數稱為全域變量,其只需要在一個原始檔中定義,就可以在所有來源檔案中使用;全域變數宣告必須以var關鍵字開頭,如果想要在外部套件中使用全域變數的首字母必須大寫。 3.函數定義中的變數稱為形式參數。

Go語言的變數有幾種類型

本教學操作環境:windows7系統、GO 1.18版本、Dell G3電腦。

Go語言是靜態型別語言,因此變數(variable)是有明確類型的,編譯器也會檢查變數類型的正確性。在數學概念中,變數表示沒有固定值且可改變的數。但從電腦系統實現角度來看,變數是一段或多段用來儲存資料的記憶體。

一個變數(常數、型別或函數)在程式中都有一定的作用範圍,稱之為作用域。

了解變數的作用域對我們學習Go語言來說是比較重要的,因為Go語言會在編譯時檢查每個變數是否使用過,一旦出現未使用的變量,就會報編譯錯誤。如果無法理解變數的作用域,就有可能會帶來一些不明所以的編譯錯誤。

根據變數定義位置的不同,可以分為以下三種:

  • 函數內定義的變數稱為局部變數

  • 函數外定義的變數稱為全域變數

  • 函數定義中的變數稱為形式參數

下面就來分別介紹一下。

局部變數

在函數內部宣告/定義的變數叫做局部變量,局部變數的作用域僅限於函數內部。在函數內部定義的變量,函數的 參數 和 回傳值,if 和 for 結構內部所使用的變數等都是局部變數。

局部變數不是一直存在的,它只在定義它的函數被呼叫後存在,函數呼叫結束後這個局部變數就會被銷毀。

【範例】下面的 main() 函數中使用到了局部變數 a、b、c。

package main
import (
    "fmt"
)
func main() {
    //声明局部变量 a 和 b 并赋值
    var a int = 3
    var b int = 4
    //声明局部变量 c 并计算 a 和 b 的和
    c := a + b
    fmt.Printf("a = %d, b = %d, c = %d\n", a, b, c)
}

Go語言的變數有幾種類型

使用 {} 可以限制變數的作用域

package main
import "fmt"
func main() {
	{
		name := "HaiCoder"
		fmt.Println("Name =", name)
	}
}

Go語言的變數有幾種類型

##我們使用 { } 將變數 name 的作用域限制在 {} 內部,也就是此時的變數 name 的作用域僅在 {} 內,name 則是局部變數。

附註:在變數的作用域外,存取變量,程式報錯

package main
import "fmt"
func main() {
	for i := 0; i < 3; i++{
		fmt.Print(i)
		fmt.Print(" ")
	}
	fmt.Print(i)
}

Go語言的變數有幾種類型

我們在for 迴圈的內部定義了一個局部變數 i並使用,此時變數 i 的作用域僅限於for 迴圈的 {} 內部。最後我們在 for 迴圈的 {} 外部存取變數 i 程式報錯,因為變數 i 超出了作用域。

全域變數

在函數體外宣告的變數稱為全域變量,全域變數只需要在一個原始檔中定義,就可以在所有原始檔中使用,當然,不包含這個全域變數的來源檔案需要使用「import」關鍵字引入全域變數所在的來源檔案之後才能使用這個全域變數。

全域變數宣告必須以 var 關鍵字開頭,如果想要在外部套件中使用全域變數的首字母必須大寫。

【範例】下面程式碼中,第 6 行定義了全域變數 c。

package main
import "fmt"
//声明全局变量
var c int
func main() {
    //声明局部变量
    var a, b int
    //初始化参数
    a = 3
    b = 4
    c = a + b
    fmt.Printf("a = %d, b = %d, c = %d\n", a, b, c)
}

Go語言的變數有幾種類型

說明:Go語言程式中全域變數與局部變數名稱可以相同,但是函數體內的局部變數會被優先考慮。

package main
import "fmt"
//声明全局变量
var a float32 = 3.14
func main() {
    //声明局部变量
    var a int = 3
    fmt.Printf("a = %d\n", a)
}

Go語言的變數有幾種類型

形式參數

#在定義函數時函數名稱後面括號中的變數叫做形式參數(簡稱形參)。形式參數只會在函數呼叫時才會生效,函數呼叫結束後就會被銷毀,當函數未被呼叫時,函數的形參並不佔用實際的儲存單元,也沒有實際值。

形式參數會作為函數的局部變數來使用。

【範例】下面程式碼中第 21 行定義了形式參數 a 和 b。

package main
import (
    "fmt"
)
//全局变量 a
var a int = 13
func main() {
    //局部变量 a 和 b
    var a int = 3
    var b int = 4
    fmt.Printf("main() 函数中 a = %d\n", a)
    fmt.Printf("main() 函数中 b = %d\n", b)
    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
}

Go語言的變數有幾種類型

【相关推荐:Go视频教程编程教学

以上是Go語言的變數有幾種類型的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn