我正在阅读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中的接口只有非常基本的了解,但我不知道为什么会以这种方式使用它。
答案 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*)
,这意味着任何类型的值都可以存储在地图中。