пакет шаблона реализует механизм, поддерживающий контекст HTML, для обеспечения безопасности HTML-кода для инъекций.
Другими словами, он знает, что он выполняется внутри тега скрипта, поэтому он не выводит необработанную строку, а кодированные в json строки, совместимые с js.
Чтобы исправить это, в отличие от комментария, задайте для строки значение template.JS
, и меры безопасности не будут пытаться защитить строки.
ref - https://golang.org/pkg/html/template/
Шаблон пакета (html / template) реализует управляемые данными шаблоны для создания вывода HTML, безопасного для внедрения кода.
Использование этого типа представляет угрозу безопасности: инкапсулированный контент должен поступать из надежного источника, так как он будет дословно включен в выходные данные шаблона.
package main
import (
"html/template"
"os"
)
func main() {
c := `<script>
{{.foo}}
{{.oof}}
</script>`
d := map[string]interface{}{"foo": "bar", "oof": template.JS("rab")}
template.Must(template.New("").Parse(c)).Execute(os.Stdout, d)
}
https://play.golang.org/p/6qLnc9ALCeC