宣告和使用變數
讓我們藉由查看如何在 Go 中宣告和使用變數,來開始本課程模組。 有各種方式來宣告變數。 我們將查看每個變數,而且您將選擇最適合您需求或樣式的變數。 當探索變數的核心概念時,我們將注意您通常不會在其他程式設計語言中找到的一些特定事物。
我們將在本節中包含您可以在 Visual Studio Code 或在 Go 遊樂場中執行的程式碼片段。
宣告變數
若要宣告變數,您必須使用 var
關鍵字:
var firstName string
前一個陳述式宣告名稱為 firstName
的變數,其類型為 string
。 (我們將在接下來的章節討論資料類型。) 此範例顯示宣告變數的最基本方式。 如果您想要宣告另一個變數,只需將類似的陳述式新增至前一個變數。 您可以在單一行中宣告多個變數,前提是這些變數為相同的類型:
var firstName, lastName string
藉由在變數名稱後面加上逗號 (,
),表示您即將宣告另一個變數。 在此情況下,前一個陳述式會宣告兩個名為 firstName
和 lastName
的變數,其類型為 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 會推斷 firstName
和 lastName
變數屬於 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 中宣告的每個變數,您必須在某處使用該變數。