默认情况下,没有 Map 参考 .

package main

    import "fmt"

    func mapToAnotherFunction(m map[string]int) {
        m["hello"] = 3
        m["world"] = 4
        m["new_word"] = 5
    }

    // func mapToAnotherFunctionAsRef(m *map[string]int) {
    // m["hello"] = 30
    // m["world"] = 40
    // m["2ndFunction"] = 5
    // }

    func main() {
        m := make(map[string]int)
        m["hello"] = 1
        m["world"] = 2

        // Initial State
        for key, val := range m {
            fmt.Println(key, "=>", val)
        }

        fmt.Println("-----------------------")

        mapToAnotherFunction(m)
        // After Passing to the function as a pointer
        for key, val := range m {
            fmt.Println(key, "=>", val)
        }

        // Try Un Commenting This Line
        fmt.Println("-----------------------")

        // mapToAnotherFunctionAsRef(&m)
        // // After Passing to the function as a pointer
        // for key, val := range m {
        //  fmt.Println(key, "=>", val)
        // }

        // Outputs
        // prog.go:12:4: invalid operation: m["hello"] (type *map[string]int does not support indexing)
        // prog.go:13:4: invalid operation: m["world"] (type *map[string]int does not support indexing)
        // prog.go:14:4: invalid operation: m["2ndFunction"] (type *map[string]int does not support indexing)

    }

来自Golang博客 -

Map 类型是引用类型,如指针或切片,因此上面的m值为nil;它没有指向初始化的 Map . 在读取时,nil映射的行为类似于空映射,但尝试写入nil映射将导致运行时出现混乱;不要那样做 . 要初始化 Map ,请使用内置的make函数:

m = make(map[string]int)