2016-07-19 3 views
0
Templates.ExecuteTemplate(w, "index.html", map[string]interface{} { 
     "Games": games}) 
} 

Где игры является []map[string]interface{} (отображается результат SQL запроса)Cast интерфейс {}, чтобы ввести в шаблон

В шаблоне:

{{ range $gval := .Games }} 
    {{ how to make something like: $gval.name.(string) }} 
{{end}} 

Как бросить интерфейс {} значение отображения в строке (или int) в шаблоне? В «идти» я могу сделать games[0]["name"].(string)

Когда я делать $gval.name пишет шестнадцатеричную строку

ответ

1

Я не думаю, что это можно делать утверждение типа из шаблона. Вам нужно будет написать свою собственную функцию и вызвать ее из шаблона. Например:

func ToString(value interface{}) string { 
    switch v := value.(type) { 
    case string: 
     return v 
    case int: 
     return strconv.Itoa(v) 
    // Add whatever other types you need 
    default: 
     return "" 
} 

Чтобы иметь возможность вызвать функцию из шаблона вы должны вызвать Funcs() метод на шаблоне:

tpl.Funcs(template.FuncMap{"tostring": ToString}) 

Теперь вы можете сделать {{$gval.name | tostring}} внутри шаблона

Смежные вопросы