一个空的接口映射在golang函数中做了什么?

时间:2015-06-12 00:45:10

标签: go

我正在阅读an article on golang templates,这在示例代码中出现。

func renderTemplate(w http.ResponseWriter, name string, data map[string]interface{}) error {
    // Ensure the template exists in the map.
    tmpl, ok := templates[name]
    if !ok {
        return fmt.Errorf("The template %s does not exist.", name)
    }

    w.Header().Set("Content-Type", "text/html; charset=utf-8")
    tmpl.ExecuteTemplate(w, "base", data)

    return nil
}

我不理解的部分是函数声明中的参数data

data map[string]interface{}

我对go中的接口只有非常基本的了解,但我不知道为什么会以这种方式使用它。

1 个答案:

答案 0 :(得分:3)

v1: [1, 1, 2, 2, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8] unique: [3] v2: [10, 10, 17, 17, 18, 18, 19, 19, 21, 21, 23] unique: [23] v3: [1, 3, 3, 5, 5, 7, 7, 8, 8, 9, 9, 10, 10] unique: [1] 类似于C中的interface{}或Java中的(void*),这意味着任何类型的值都可以存储在地图中。