【发布时间】:2017-10-29 16:12:59
【问题描述】:
现在我正在学习 Golang,但不了解 Golang 的行为方式。
这里是一个切片的简写声明和初始化:
ilist := []int{1, 2, 3} //it works
另一方面,如果我尝试使用 var 关键字声明和初始化它,则会出现错误:
var ilist [] int = {1, 2, 3, 4, 5} //error
如果我只初始化一个变量(而不是切片),它可以正常工作:
var i int = 5 // works fine
为什么Golang会这样,有什么具体原因吗?
【问题讨论】:
-
我对 Go 没有经验,但我快速浏览了语言规范。你试过
var ilist []int = []int{1, 2, 3}吗?与诸如数字或字符串之类的基本文字相比,像切片这样的复合文字需要类型。您也可以省略 var 名称后的类型:var ilist = []int{1, 2, 3}。 -
是的,你说得对,但仍然很奇怪,因为我提供了所有信息以在声明的左侧创建复合文字 (var ilist [] int )。
标签: go initialization slice literals