如何在Go中执行带有500状态代码的模板?

I know that I can execute template with:

t.ParseFiles(name)
t.Execute(w, page)

And respond 500 with a message like this:

http.Error(w, err.Error(), http.StatusInternalServerError)

But how should I return 500 with a template that contains that message?

Call ResponseWriter.WriteHeader before you execute your template:

WriteHeader sends an HTTP response header with status code.
If WriteHeader is not called explicitly, the first call to Write will trigger an implicit WriteHeader(http.StatusOK).
Thus explicit calls to WriteHeader are mainly used to send error codes.

t.ParseFiles(name)
w.WriteHeader(http.StatusInternalServerError)
t.Execute(w, page)

If you look at the source code of http.Error, you can see it's doing the same thing.