тот же код, но разные результаты с использованием шаблона gin + go

Основная информация

  • Версия go: go1.4.2 darwin / amd64
  • Операционная система: Mac OS X 10.10.5

Я работаю над небольшим веб-проектом, написанным на основе go и gin. Вот мой код голанга. После запуска go run test.go у нас есть веб-сервер, который прослушивает 8089.

Golang test.go

package main

import "github.com/gin-gonic/gin"
import "net/http"

func main() {
    router := gin.Default()
    router.LoadHTMLGlob("templates/*")
    router.GET("/index", func(c *gin.Context) {
        c.HTML(http.StatusOK, "index.html", gin.H{
            "scheme": "http",
            "domain": "meican.loc",
        })
    })
    router.Run(":8089") // listen and serve on 0.0.0.0:8089
}

HTML-код, сгенерированный в серверной части, должен содержать шаблон, используемый механизмом внешнего интерфейса javascript (скажем, Angular.js).

Итак, код шаблона находится в теге script, вот так:

Часть templates / index.html

<script type="text/template" charset="utf-8">
  <div data="{{.scheme}}://{{.domain}}/qr"></div>
  <div data="{{.scheme}}://{{.domain}}/qr"></div> <!-- problem here -->
</script>

При повторном использовании {{.domain}} результат был другим. Я обновил браузер и проверил исходный код. Потом у меня получилось вот это:

Результат исходного кода браузера

<script type="text/template" charset="utf-8">
  <div data="http://meican.loc/qr"></div>
  <div data="http://"meican.loc"/qr"></div>  <!-- problems here -->
</script>

У второго div есть 2 лишних двойных кавычки.

Почему так происходит? И как решить эту проблему?


person Miaonster    schedule 14.08.2015    source источник


Ответы (1)


Это ошибка в Go, и ее планируется исправить в версии 1.7. по состоянию на март 2016 г. (также частично рассмотрено в 1.6)

person John Weldon    schedule 26.03.2016