Go 语言变量、零值和类型推断

Go

变量和数据类型简介

每个程序都需要在内存中存储一些数据或者信息。数据存储在特定存储位置的内存中。

变量只是为存储数据的存储位置指定一个特定的名称。除名称外,每个变量还具有关联的类型。

Golang Variables, Zero Values, and Type inference example with illustration

数据类型以下简称类型,类型对相关的数据集进行分类,定义它们的存储方式,它们可以保存的值的范围以及可以对它们执行的操作。

例如,Golang的数据类型为int8。它表示8位整数,其值的范围可以从-128到127.它还定义了可以对int8数据类型进行的操作,例如加,减,乘,除等。

我们在Golang中还有一个int数据类型,其大小取决于计算机系统。在32位系统上为32位宽,在64位系统上为64位宽。

在Golang中数据类型还有boolstringfloat34float64等。我在这里简要介绍了数据类型,因为在深入研究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

注意,短变量声明只能在函数内部使用。在函数外部,每个语句都需要以varfunc等为关键字开头,因此:=运算符不可用。

结束语

变量是任何编程语言中的基本概念之一。在本文中,您学习了如何在Golang中声明变量,类型推断如何工作以及如何使用多个声明和简短声明。

本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

原文地址:https://www.callicoder.com/golang-variab...

译文地址:https://learnku.com/go/t/46613

本文为协同翻译文章,如您发现瑕疵请点击「改进」按钮提交优化建议
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!