1 回答
TA贡献1815条经验 获得超10个赞
您需要执行类型断言:特别是 Effective Go 的这一部分。
str, ok := value.(string)
if ok {
fmt.Printf("string value is: %q\n", str)
} else {
fmt.Printf("value is not a string\n")
}
给出您要执行的操作的更精确示例:
if userID, ok := session.Values["userID"].(string); ok {
// User ID is set
} else {
// User ID is not set/wrong type; raise an error/HTTP 500/re-direct
}
type M map[string]interface{}
err := t.ExecuteTemplate(w, "user_form.tmpl", M{"current_user": userID})
if err != nil {
// handle it
}
您所做的是确保您从 interface{} 容器中提取的用户 ID 实际上是一个字符串。{} 如果不是,你处理它(如果你不这样做,你会按照文档编写程序恐慌)。
如果是,您可以将其传递给您的模板,您可以在该模板中将其作为{{ .current_user }}. M是我用来避免每次调用模板渲染函数时都必须输入 map[string]interface{} 的快捷方式。
- 1 回答
- 0 关注
- 434 浏览
添加回答
举报