内容简介:注:本文是对在GO语言中简短变量声明是一种非常方便的“声明变量”方式short variable declaration is a very convenient manner of "declaring variable" in
注:本文是对 golang-101-hacks 中文翻译。
在 GO 语言中简短变量声明是一种非常方便的“声明变量”方式
short variable declaration is a very convenient manner of "declaring variable" in Go
:
i := 10
以下是简写方式(注意变量没有标明类型):
It is shorthand of following (Please notice there is no type):
var i = 10
Go编译器会根据变量的值来推断变量的类型。这将带来极大方便,但另一方面,也带来了一些陷阱,应该注意:
The Go
compiler will infer the type according to the value of variable. It is a very handy feature, but on the other side of coin, it also brings some pitfalls which you should pay attention to:
(1)简短变量声明格式只能用于函数体内
(1) This format can only be used in functions:
package main i := 10 func main() { fmt.Println(i) }
编译体会提示如下错误
syntax error: non-declaration statement outside function body
(2)必须声明 至少一个新变量 :
package main import "fmt" func main() { var i = 1 i, err := 2, true fmt.Println(i, err) }
在 i, err:= 2, false
语句中,只有' err '是一个新声明的变量, var
实际上是在 vari = 1
中声明的。
简短变量声明可以隐藏全局变量声明,它可能不是您想要的,这让您大吃一惊:
package main import "fmt" var i = 1 func main() { i, err := 2, true fmt.Println(i, err) }
' i, err:= 2, true '实际上声明了一个 new local i ,这使得 global i 在' main '函数中没有被访问。使用全局变量,不使用局部变量,正确的解决方法如下:
package main import "fmt" var i int func main() { var err bool i, err = 2, true fmt.Println(i, err) }
参考:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
信息论、推理与学习算法
麦凯 / 高等教育出版社 / 2006-7 / 59.00元
本书是英国剑桥大学卡文迪许实验室的著名学者David J.C.MacKay博士总结多年教学经验和科研成果,于2003年推出的一部力作。本书作者不仅透彻地论述了传统信息论的内容和最新编码算法,而且以高度的学科驾驭能力,匠心独具地在一个统一框架下讨论了贝叶斯数据建模、蒙特卡罗方法、聚类算法、神经网络等属于机器学习和推理领域的主题,从而很好地将诸多学科的技术内涵融会贯通。本书注重理论与实际的结合,内容组......一起来看看 《信息论、推理与学习算法》 这本书的介绍吧!