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

我正在查看Go-SQL-Driver 此处的示例代码:


//Insert

    stmt, err := db.Prepare("INSERT userinfo SET username=?")


// Update

    stmt, err = db.Prepare("update userinfo set username=?")

为什么在Insert我们使用:=但在Update我们使用=?在我看来,两者都应该是:=


慕侠2389804
浏览 221回答 3
3回答

料青山看我应如是

:=用于短变量声明;它既在左侧声明变量,又为它们赋值。(在Go 编程语言规范的“短变量声明”部分对此进行了解释。)=相比之下,仅执行赋值操作。在您的示例中,使用第二行=是因为变量已经声明(由第一行),因此:=不需要。(事实上,它会给出一个错误信息::=仅当至少一个变量是“新的”时才允许,即尚未声明。)

饮歌长啸

=是赋值运算符之一。:=是简短的变量声明。在引用的链接中,您可以发现语义完全不同,因此实际上“代替”的概念有点问题。一个可能有用的助记符规则:identifierI := expressionE是相同的var identifierI = expressionE这与var identifierI typeOf(expressionE) identifierI = expressionE

慕丝7291255

:=是为了方便。重要的区别在于:=does类型推断,因此当它在一行中声明和分配变量时,变量类型是从函数的返回值类型推断出来的。这使您的程序在大多数情况下更易于阅读,但确实意味着有人必须在文档中查找函数的返回值类型以找出变量的类型。你要使用=,当你重新assiging到现有的变量或函数内分配到全局/包变量的时候,否则,你将创建一个新的局部变量。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go