Golang 中国

GO指南中说过: map 在使用之前必须用 make 而不是 new 来创建;值为 nil 的 map 是空的,并且不能赋值。 .那为什么下面这种方式不用初始化呢?

package main
import "fmt"
var m = map[string]string{
    "Bell Labs":"18",
    "Google":"18",
}
func main() {
    for i,v:=range m{
        fmt.Println(i,",",v)
    }
}

还有一个问题说map在初始化之前值为nil,make初始化了数据结构,返回初始化后的(非零)值,未初始化之前和初始化后的非零值区别在哪?


jimmykuu 于 2014-02-08 14:54 修改
2 回复
jimmykuu
#1 jimmykuu • 2014-02-08 15:04

make(map[string]string)map[string]string{}都是对map进行初始化操作,第二种方式就是初始化,而不是不用初始化,你那种是初始化并赋值。

map初始化后的变量其实是个内存地址,就是个指针。

wxfbboy
#2 wxfbboy • 2014-02-09 03:10

明白了 谢谢站长的耐心解答

需要 登录 后方可回复, 如果你还没有账号你可以 注册 一个帐号。