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

为什么使用“=”而不是“:=”?

为什么使用“=”而不是“:=”?

Go
慕侠2389804 2021-06-20 08:12:17
我正在查看Go-SQL-Driver 此处的示例代码://Insert    stmt, err := db.Prepare("INSERT userinfo SET username=?")// Update    stmt, err = db.Prepare("update userinfo set username=?")为什么在Insert我们使用:=但在Update我们使用=?在我看来,两者都应该是:=
查看完整描述

3 回答

?
料青山看我应如是

TA贡献1772条经验 获得超8个赞

:=用于短变量声明;它既在左侧声明变量,又为它们赋值。(在Go 编程语言规范的“短变量声明”部分对此进行了解释。)

=相比之下,仅执行赋值操作。

在您的示例中,使用第二行=是因为变量已经声明(由第一行),因此:=不需要。(事实上,它会给出一个错误信息::=仅当至少一个变量是“新的”时才允许,即尚未声明。)


查看完整回答
反对 回复 2021-06-21
?
饮歌长啸

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

=赋值运算符之一

:=简短的变量声明

在引用的链接中,您可以发现语义完全不同,因此实际上“代替”的概念有点问题。

一个可能有用的助记符规则:

identifierI := expressionE

是相同的

var identifierI = expressionE

这与

var identifierI typeOf(expressionE)
identifierI = expressionE


查看完整回答
反对 回复 2021-06-21
?
慕丝7291255

TA贡献1859条经验 获得超6个赞

:=是为了方便。重要的区别在于:=does类型推断,因此当它在一行中声明和分配变量时,变量类型是从函数的返回值类型推断出来的。

这使您的程序在大多数情况下更易于阅读,但确实意味着有人必须在文档中查找函数的返回值类型以找出变量的类型。

你要使用=,当你重新assiging到现有的变量或函数内分配到全局/包变量的时候,否则,你将创建一个新的局部变量。


查看完整回答
反对 回复 2021-06-21
  • 3 回答
  • 0 关注
  • 210 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信