2012-10-19 80 views
2

如果我在函數定義中聲明map[string]string返回值,那麼在使用它之前是否必須先創建它,就像我已經在函數體中聲明它一樣? 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

+0

那麼如何從函數返回地圖的解決方案? –

回答

11

Map types

未初始化的映射的值是nil

使用內置函數make創建一個新的空白地圖值。

A nil地圖相當於一個空的地圖,除了沒有元素可能是 添加。

是的。

+0

那麼如何從函數返回地圖的解決方案? –

+0

@ImanTumorang我想它只是做一個局部範圍的地圖,'temp_map:= make(map [string] string)'然後填充地圖並返回它。然後它應該被GC'ed。 – Pred