Golang and AngularJS template conflict

I have a conflict with golang html/template and angularjs delimiters. I know that there is a method that lets to change delimiter in Go, but it does not work for me. Maybe it should be called before parsing of files? Could you please provide an example, how it should be implemented.

I found a lot of comments that AngularJS and Go should not have any conflict because they should be used separately. As I understand, Go should be used only for backend (REST). The question is, how AngularJS, HTML should be loaded? In this case, should I have to servers?

you need to change the delimiters characters used that's all. I've had the same problem before on Beego because of the exact templating characters {{ }} and once I changed that to <<<>>> I managed to serve the html without any problems.

You basically need to call this function before you do any parsing: func (t *Template) Delims(left, right string) *Template

for more details:

http://golang.org/pkg/html/template/#Template.Delims

The idea behind AngularJS is to have all the rendering process run on the client side.

If you follow this logic all along, you do not need any rendering on the server side (e.g : no call to template.Execute) when serving AngularJS html files, you simply have to serve static content.

Here is a full example of using Golang HTML templates + Angular.js by setting delimiters as mentioned by others. The reason for this example is that it shows an end to end experience, setting up the serving of static assets, template parsing and of course angular.js integration.

This worked for me.

indexTmpl = template.New("index.html").Delims("<<", ">>")
indexTmpl, _ = indexTmpl.ParseFiles("index.html")

Solution that won't require changing delimiters:

Use {{"{{"}} for opening and {{"}}"}} for closing angular expressions.

Example:

{{"{{"}} 1 + 2 {{"}}"}}

As Yasir said, you should change delimiters. I martini with [[ and ]] delimiters and it works with no problems.

Similar to Bijans answer but a bit more readable. You can use "printf" in your template to print a string literal. This works just the same for the "html/template" package.


For example: {{ printf "{{}}"}}. https://golang.org/pkg/text/template/#pkg-overview