小编典典

在Go编程语言中定义变量

go

我正在学习Go语言,碰巧看到这种类型的变量声明:

i:=1;

但是它说Go具有静态变量。即变量应该以这种方式定义

var i int=1;

那么这两种方法有什么区别?在第一个中,我们不需要指示数据类型。为什么会这样呢?


阅读 262

收藏
2020-07-02

共1个答案

小编典典

第一个i := 1称为短变量声明。这是带有初始值设定项表达式但没有类型的常规变量声明的简写:

var IdentifierList = ExpressionList

您没有指定的类型i,但是i会根据某些规则指定类型。它的类型将被自动推断。在这种情况下,它将是类型,int因为初始化器表达式1是默认类型为的无类型整数常量int,因此当需要类型时(例如,在短变量声明中使用它),int将推导类型。

因此,Go是静态类型的。这意味着变量将具有静态类型,并且在运行时存储在变量中的值将始终为该类型。静态类型并不意味着
必须显式地指定静态类型,而只是意味着变量必须具有静态类型-在编译时决定-即使您使用短变量声明并且未指定它,也要满足哪种条件。

请注意,如果使用var关键字声明变量,也可以省略类型:

var i = 1

在这种情况下,类型也将从初始化程序表达式的类型中推导出。

规格:变量声明:

如果存在类型,则为每个变量指定该类型。否则,将为每个变量分配赋值的相应初始化值的类型。如果该值是未类型化的常量,则首先将其转换默认类型;如果它是无类型的布尔值,则首先将其转换为type
bool。预声明的值nil不能用于初始化没有显式类型的变量。

2020-07-02