相关疑难解决方法(0)

为什么在Go中有两种方式声明变量,有什么区别以及使用哪些?

根据Go参考,有两种声明变量的方法

Variable_declarations(格式为var count = 0var count int)

Short_variable_declarations(格式为count := 0)

我发现决定使用哪一个是非常令人困惑的.

我所知道的差异(到现在为止)是:

  • 我只能count := 0在函数范围内使用格式.
  • count := 0可以 在多变量简短声明中重新声明.

但就我所知,他们的行为确实相同.在参考文献中它还:

它(count:=0方式)是具有初始化表达式但没有类型的常规变量声明的简写

我的困惑是:

  • 如果一个只是另一个的简写方式,他们为什么表现不同?
  • Go的作者如何关注两种方式来声明一个变量(为什么它们没有合并为一种方式)?只是为了迷惑我们?
  • 在使用它们时,我是否还应该睁大眼睛,以防我掉进坑里?

variables var go

29
推荐指数
1
解决办法
1万
查看次数

Go vs:= Go

在此处的Go Web服务器示例中:http://golang.org/doc/effective_go.html#web_server

以下代码行有效

var addr = flag.String("addr", ":1718", "http service address")
Run Code Online (Sandbox Code Playgroud)

但改变它

addr := flag.String("addr", ":1718", "http service address")
Run Code Online (Sandbox Code Playgroud)

是一个编译错误.为什么?是否与函数的返回类型*string而不是面部有什么关系string?这有什么不同?

更新:感谢您指出:=顶层不允许这样做.知道为什么这种不一致性在规范中?我没有看到任何理由在块内部行为有所不同.

variable-assignment go colon-equals

27
推荐指数
3
解决办法
8689
查看次数

标签 统计

go ×2

colon-equals ×1

var ×1

variable-assignment ×1

variables ×1