Go:使用自动返回值初始化一个映射。

huangapple go评论77阅读模式
英文:

Go: Initialize a map with automatic return values

问题

如果我在函数定义中声明了一个map[string]string的返回值,我是否必须在使用之前创建它,就像我在函数体中声明它一样?http://play.golang.org/p/iafZbG2ZbY

package main

import "fmt"

func fill() (a_cool_map map[string]string) {
    // 这样修复:a_cool_map = make(map[string]string)
	a_cool_map["key"] = "value"
	return
}
func main() {
	a_cool_map := fill()
	fmt.Println(a_cool_map)
}

panic: runtime error: assignment to entry in nil map

英文:

If I declare a map[string]string return value in a function definition, do I have to make it before using it, just like if I had instead declared it in the function body? http://play.golang.org/p/iafZbG2ZbY

package main

import "fmt"

func fill() (a_cool_map map[string]string) {
    // This fixes it: a_cool_map = make(map[string]string)
	a_cool_map["key"] = "value"
	return
}
func main() {
	a_cool_map := fill()
	fmt.Println(a_cool_map)
}

panic: runtime error: assignment to entry in nil map

答案1

得分: 19

> 地图类型
>
> 未初始化的地图的值为nil
>
> 使用内置函数make可以创建一个新的空地图值。
>
> nil地图与空地图等效,只是不能添加元素。

是的。

英文:

> Map types
>
> The value of an uninitialized map is nil.
>
> A new, empty map value is made using the built-in function make.
>
> A nil map is equivalent to an empty map except that no elements may be
> added.

Yes.

huangapple
  • 本文由 发表于 2012年10月19日 08:08:46
  • 转载请务必保留本文链接:https://go.coder-hub.com/12965569.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定