Go 的變數宣告有以下幾種方式:
var age int
age = 10
fmt.Println(age) // 10
// 多個變數寫法一 (限同型別)
var firstName, lastName string
firstName = "Dong"
lastName = "Li"
fmt.Println(firstName) // Dong
fmt.Println(lastName) // Li
// 多個變數寫法二
var (
userID int
email string
)
userID = 123
email = "test@gmail.com"
fmt.Println(userID) // 123
fmt.Println(email) // test@gmail
var age int = 10
fmt.Println(age) // 10
// 也可省略型別,使它自動判斷型別
var nickname = "DongDong"
fmt.Println(nickname) // DongDong
// 宣告多個變數同時給予預設值
var (
userID = 123
email = "test@gmail"
)
fmt.Println(userID) // 123
fmt.Println(email) // test@gmail
:=
宣告變數這是最常用的宣告方式,使用此方式可以自動判斷變數型別,但只限於在函數內使用。
age := 10
fmt.Println(age) // 10
const pi = 3.1415926
fmt.Println(pi) // 3.1415926
// 宣告多個常數
const (
a = 1
b = 2
)
fmt.Println(a) // 1
fmt.Println(b) // 2
package main
import "fmt"
var (
username string = "foo"
nickname string = "bar"
)
const pi = 3.1415926
func main() {
fmt.Println(username) // foo
fmt.Println(nickname) // var
fmt.Println(pi) // 3.1415926
}
使用全域變數時需要謹慎管理,以確保變數的一致性和避免衝突。全域變數可以在多個函數中被使用,過度使用全域變數可能會導致程式的可讀性和可維護性下降,因此需要謹慎管理。
在 Go 中,當變數名稱或 function 名稱的子母開頭為大寫時,代表此變數或 function 是可被其他 package 引入的。例如:
// enum/enum.go
package enum
var (
StatusPublished = "published"
StatusDraft = "draft"
)
// main.go
package main
import (
"fmt"
"github.com/Lockingdong/go30/day3/enum"
)
func main() {
fmt.Println(enum.StatusPublished) // published
}