为了账号安全,请及时绑定邮箱和手机立即绑定

在 Go 编程语言中定义变量

在 Go 编程语言中定义变量

Go
一只萌萌小番薯 2021-12-27 17:57:38
我正在学习 Go 语言并遇到这种类型的变量声明:i:=1;但它说 Go 有静态变量。i,e 变量应该像这样定义var i int=1;那么这两种方法有什么区别呢?在第一个中,我们不需要指明数据类型。为什么会这样?
查看完整描述

2 回答

?
牧羊人nacy

TA贡献1862条经验 获得超7个赞

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

var IdentifierList = ExpressionList

您不指定 的类型i,但i将具有基于某些规则的类型。它的类型将被自动推断。在这种情况下,它将是类型的,int因为初始化表达式1是一个无类型的整数常量,其默认类型是int,所以当需要类型时(例如,它用于短变量声明),int将推导出类型。

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

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

var i = 1

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

规范:变量声明:

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


查看完整回答
反对 回复 2021-12-27
?
德玛西亚99

TA贡献1770条经验 获得超3个赞

Go 的设计考虑到了易用性。所以新变量能够使用:=运算符获得右侧的隐式类型。1例如,常量在 go 中有一个隐式类型。


查看完整回答
反对 回复 2021-12-27
  • 2 回答
  • 0 关注
  • 216 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号