宣告和使用變數

已完成

讓我們藉由查看如何在 Go 中宣告和使用變數,來開始本課程模組。 有各種方式來宣告變數。 我們將查看每個變數,而且您將選擇最適合您需求或樣式的變數。 當探索變數的核心概念時,我們將注意您通常不會在其他程式設計語言中找到的一些特定事物。

我們將在本節中包含您可以在 Visual Studio Code 或在 Go 遊樂場中執行的程式碼片段。

宣告變數

若要宣告變數,您必須使用 var 關鍵字:

var firstName string

前一個陳述式宣告名稱為 firstName 的變數,其類型為 string。 (我們將在接下來的章節討論資料類型。) 此範例顯示宣告變數的最基本方式。 如果您想要宣告另一個變數,只需將類似的陳述式新增至前一個變數。 您可以在單一行中宣告多個變數,前提是這些變數為相同的類型:

var firstName, lastName string

藉由在變數名稱後面加上逗號 (,),表示您即將宣告另一個變數。 在此情況下,前一個陳述式會宣告兩個名為 firstNamelastName 的變數,其類型為 string。 如果您想要新增類型為 int 的第三個變數,程式碼看起來會像這樣:

var firstName, lastName string
var age int

撰寫前一個陳述式的另一種方式是在 var 關鍵字之後使用括弧,就像您有一個用來宣告變數的專用區塊,如下所示:

var (
    firstName, lastName string
    age int
)

將變數初始化

您此時只宣告了變數,但有時您需要它們具有初始值。 在 Go 中,您可以透過各種方式初始化變數。 例如,繼續前述的同一範例。您可以使用下列程式碼來初始化每個變數:

var (
    firstName string = "John"
    lastName  string = "Doe"
    age       int    = 32
)

如果您決定初始化變數,則不需要指定其類型,因為當您使用一值來初始化變數時,Go 會推斷類型。 例如,您可以宣告和初始化變數,如下所示:

var (
    firstName = "John"
    lastName  = "Doe"
    age       = 32
)

Go 會推斷 firstNamelastName 變數屬於 string 類型,而且 age 變數為 int 類型。

各種初始化變數的方式

在 Go 中,您可以在單一行中宣告和初始化變數。 您可以使用逗號來分隔每個變數名稱,並對每個值執行相同動作 (依相同順序),如下所示:

var (
    firstName, lastName, age = "John", "Doe", 32
)

有另一種方式,您可以用來宣告和初始化變數。 此方法是最常在 Go 中執行的方式。 我們使用的相同範例看起來像這樣:

package main

import "fmt"

func main() {
    firstName, lastName := "John", "Doe"
    age := 32
    fmt.Println(firstName, lastName, age)
}

注意

請注意 import "fmt" 陳述式。 我們會使用 import 關鍵字,將套件的內容納入範圍。 我們會匯入 fmt 套件,以便在程式碼中使用 Println 方法。 我們將在稍後的單元中進一步探討此關鍵字。

執行上述程式碼,以確認這種宣告和初始化變數的方式有效。

請注意,在定義變數名稱之後,您必須立即包含冒號等號 (:=) 和其對應值。 當您使用冒號等號時,您要宣告的變數必須是新的變數。 如果您使用冒號等號,並已宣告變數,則程式不會進行編譯。 請試著用冒號等號 (:=) 將年齡新增為常數 (請參閱下節)。

最後,您只能在函式內使用冒號等號。 在函式外宣告變數時,您必須使用 var 關鍵字來執行宣告。 如果您不熟悉函式,請不要擔心。 我們將在稍後的單元中簡介這些函式。

宣告常數

您有時需要在程式碼中具有靜態值,稱為「常數」。 Go 支援使用常數。 宣告常數的關鍵字是 const

例如,您可以宣告如下的常數:

const HTTPStatusOK = 200

如同變數,常數的類型是從指派給其的值推斷而來。 在 Go 中,常數名稱通常是以大小寫或全大寫來撰寫。

如果您需要在一個區塊中宣告多個常數,做法如下:

const (
    StatusOK              = 0
    StatusConnectionReset = 1
    StatusOtherError      = 2
)

注意

Go 有一個與常數相關的有趣概念,稱為 iota,我們不會在本課程模組中涵蓋此概念。 但是,您可以查看 GitHub 上的 Go wiki,來深入了解此概念。 請記住,iota 是一個關鍵字,Go 會在值是循序時用來簡化常數定義。

雖然常數與變數之間有相似之處,但還是有一些重要的差異。 例如,您可以宣告常數而不使用常數,而且不會收到錯誤訊息。 您不能使用冒號等號來宣告常數。 如果您這麼做,Go 就會抱怨。

如果您宣告變數,但未使用它們,則 Go 會擲回錯誤

在 Go 中,您需要記住一些基本概念。 當您宣告變數但未使用時,Go 會擲回錯誤,而不是像一些其他程式設計語言一樣擲回警告。

例如,讓我們回到先前的其中一個範例,並移除 fmt.Println 呼叫:

func main() {
    firstName, lastName := "John", "Doe"
    age := 32
}

在 Visual Studio Code 或 Go 遊樂場中執行此程式碼時,您會看到宣告變數的那些行中發生錯誤。 您將會看到下列錯誤訊息:

./main.go:4:2: firstName declared but not used
./main.go:4:13: lastName declared but not used
./main.go:5:2: age declared but not used

請記住,針對您在 Go 中宣告的每個變數,您必須在某處使用該變數。