Xavier's Blog

做更美好的自己

Go 声明和使用变量

golang

声明和使用变量

声明变量

若要声明变量,需要使用 var 关键字:

var firstName string

前一个语句声明 string 类型中的一个名为 firstName 的变量。 (我们将在后续章节中讨论数据类型。)此示例演示声明变量的最基本方法。 如要声明其他变量,只需将类似的语句添加到上一个语句中。 但如果两个变量的类型相同,则可以在一行中声明多个变量:

var firstName, lastName string

通过在变量名称后面添加逗号 (,),就表示你将要声明其他变量。 在这种情况下,前一个语句就声明了 string 类型中的两个变量:firstNamelastName。 如要添加 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 中执行此操作的最常见方法。 以下是我们使用的同一个示例说明:

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

运行上述代码,确认此方法能否声明和初始化变量。

请注意,在定义变量名称后,需要在此处加入一个冒号等于号 (:=) 和相应的值。 使用冒号等于号时,*要声明的变量必须是新变量*。 如果使用冒号等于号并已经声明该变量,将不会对程序进行编译。 继续尝试。

最终,*你能在函数内使用冒号等于号*。 在声明函数外的变量时,必须使用 var 关键字执行此操作。 如果你不熟悉函数,请不要担心。 我们会在后续单元中介绍函数。

声明常量

有时,你需要在代码中加入静态值,这称为 *常量*。 Go 支持使用常量。 用于声明常量的关键字是 const

例如,你可以按如下所示声明常量:

const HTTPStatusOK = 200

与变量一样,Go 可以通过分配给常量的值推断出类型。 在 Go 中,常量名称通常以混合大小写字母或全部大写字母书写。

如果需要在一个块中声明多个常量,可以按如下所示执行:

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

备注

Go 为常量定义了一个有趣的概念,即 *iota*,本模块未对此概念作进一步解释。 但你可以查看 GitHub 上的 Go wiki 了解更多信息。 请记住,iota 是一个关键字;如果这些值存在先后顺序,Go 可使用此关键字简化常量定义。

常量和变量之间既有相似之处,也有一些重要差异。 例如,你可以在不使用常量的情况下声明常量。 你不会收到错误消息。 不能使用冒号等于号来声明常量。 如果采用这种方式,Go 会发出警告。

如果声明了变量但未使用,Go 会抛出错误

需要记住的重要一点是,在 Go 中,当你声明一个变量但不使用它时,Go 会抛出错误,而不是像某些其他编程语言一样抛出警告。

例如,让我们回到前面提及的某个示例,然后删除 println 调用:

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

当你在 Visual Studio Code 或 Go Playground 中运行此代码时,你将看到在要声明变量的多个行中存在错误。 你将看到以下错误消息:

输出

./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 中声明的每个变量,你必须将其用于某处。