进行多次响应.WriteHeader调用Fprint

I want to print out the text message first and below the text, diplay the image. But I am getting http: multiple response.WriteHeader calls errors.

How do I serve iamges and text using one hadler in one single page?

func handler(w http.ResponseWriter, r *http.Request) {
  fmt.Fprint(w, "Hello, world!")
  fp := path.Join("images", "gopher.png")
  http.ServeFile(w, r, fp)
}

func main() {
  http.HandleFunc("/", handler)
  http.ListenAndServe(":3000", nil)
}

You can't write text then call ServeFile to output a binary picture after the text.

If you want to serve text with the image then use html, setup a static file handler and use html:

var tmpl = `<!doctype html>
<html>
    <head>
        <title>%s</title>
    </head>
    <body>
    <h1>%s</h1>
    <div><img src="images/%s"></div>
    </body>
</html>
`

func handler(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintf(w, tmpl, "Hello, world!", "Hello, world!", "gopher.png")
}

func main() {
    http.HandleFunc("/", handler)
    http.Handle("/images/", http.FileServer(http.Dir("images/")))
    http.ListenAndServe(":3000", nil)
}