一般的短声明和长声明可以相互转换,例如 var x int
和 x := 0
等价。
但有些好像无法完全等价转换?
var px *int // 空指针
px := new(int) // 不是空指针,分配了内存
// (如何用短声明得到空指针?)
var w io.Writer
var a interface{}
// (interface 类型的空表达式是什么...如何写成短声明)
var s []int // 这样底层数组的地址是 0x0 (slice header 的数组指针为空?)
s := []int{} // 这样底层数组的地址是 0x5168d0,类似一个容量为 0 的数组 (s := [0]int)
// 如何用短声明达到长声明的效果..
var m map[int]int // nil map
m := map[int]int{} // 不是 nil map,可以添加数据
// 怎样用短声明得到一个 nil map ?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.