Go 语言变量、零值和类型推断
变量和数据类型简介
每个程序都需要在内存中存储一些数据或者信息。数据存储在特定存储位置的内存中。
变量只是为存储数据的存储位置指定一个特定的名称。除名称外,每个变量还具有关联的类型。
数据类型以下简称类型,类型对相关的数据集进行分类,定义它们的存储方式,它们可以保存的值的范围以及可以对它们执行的操作。
例如,Golang的数据类型为int8
。它表示8位整数,其值的范围可以从-128到127.它还定义了可以对int8
数据类型进行的操作,例如加,减,乘,除等。
我们在Golang中还有一个int
数据类型,其大小取决于计算机系统。在32位系统上为32位宽,在64位系统上为64位宽。
在Golang中数据类型还有bool
,string
,float34
,float64
等。我在这里简要介绍了数据类型,因为在深入研究Golang变量之前,有必要了解它们。
Golang深度变量
声明变量
在Golang中,我们使用var
关键字声明变量-
var firstName string
var lastName string
var age int
您还可以一次声明多个变量,如下所示:
var (
firstName string
lastName string
age int
)
您可以使用逗号组合相同类型的多个变量进行声明
var (
firstName, lastName string
age int
)
零值
任何变量只声明而没有初始值时都将具零值,具体取决于变量的类型 -
Type | Zero Value |
---|---|
bool | false |
string | ”” |
int, int8, int16 etc. | 0 |
float32, float64 | 0.0 |
下面的示例演示零值的概念:
package main
import "fmt"
func main() {
var (
firstName, lastName string
age int
salary float64
isConfirmed bool
)
fmt.Printf("firstName: %s, lastName: %s, age: %d, salary: %f, isConfirmed: %t\n",
firstName, lastName, age, salary, isConfirmed)
}
# 输出
firstName: , lastName: , age: 0, salary: 0.000000, isConfirmed: false
用初始值声明变量
这是在声明期间初始化变量的方法 -
var firstName string = "Satoshi"
var lastName string = "Nakamoto"
var age int = 35
您还可以使用多个这样的声明 -
var (
firstName string = "Satoshi"
lastName string = "Nakamoto"
age int = 35
)
甚至可以在声明变量时,使用逗号将同一类型的多个变量组合起来,然后像这样初始化它们—
var (
firstName, lastName string = "Satoshi", "Nakamoto"
age int = 35
)
类型推断
尽管Go是一种静态类型的语言,但它不需要您明确指定要每个要声明的变量的类型。
当您声明具有初始值的变量时,Golang会自动从右侧的值推断出变量的类型。因此,在声明初始化变量时无需指定类型-
package main
import "fmt"
func main() {
var name = "Rajeev Singh" // 类型声明在此处是可选的。
fmt.Printf("Variable 'name' is of type %T\n", name)
}
# 输出
变量'name'的类型为string
在上面的示例中,Golang自动从右侧的值推断出变量的类型为string
。如果您尝试将变量重新分配为其他类型的值,则编译器将抛出错误-
var name = "Rajeev Singh" // 推断为`string`类型
name = 1234 // 编译错误
类型推断让我们可以在声明或者初始化时,将不同数据类型的多个变量组合在一起,如下所示:
package main
import "fmt"
func main() {
// 具有推断类型的多个变量声明
var firstName, lastName, age, salary = "John", "Maxwell", 28, 50000.0
fmt.Printf("firstName: %T, lastName: %T, age: %T, salary: %T\n",
firstName, lastName, age, salary)
}
# 输出
firstName: string, lastName: string, age: int, salary: float64
简短声明
Go使用:=
运算符提供了简短的变量声明语法。这是声明和初始化变量(具有推断类型)的简写。
例如,var name =“ Rajeev”
的简写是name:=“ Rajeev”
。这是一个成功的示例-
package main
import "fmt"
func main() {
// 简短的变量声明语法
name := "Rajeev Singh"
age, salary, isProgrammer := 35, 50000.0, true
fmt.Println(name, age, salary, isProgrammer)
}
# 输出
Rajeev Singh 35 50000 true
注意,短变量声明只能在函数内部使用。在函数外部,每个语句都需要以var
,func
等为关键字开头,因此:=
运算符不可用。
结束语
变量是任何编程语言中的基本概念之一。在本文中,您学习了如何在Golang中声明变量,类型推断如何工作以及如何使用多个声明和简短声明。
本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。
推荐文章: