2017-10-09 113 views
0

我想打印出mysql數據庫中的行爲html。 這就是我想要達到的目標:Golang動態打印html行

<html> 
<head> 
... 
</head> 
<body> 
<a href = "url1">name1</a> 
<a href = "url2">name2</a> 
... 
</body> 
</html> 

我的Go代碼:

for rows.Next() { 
    var name string 
    var url string 

    err = rows.Scan(&name, &url) 
    if err != nil { 
     log.Fatal(err) 
    } 
} 

我以爲我可以把物品放入切片,並將它們寫出來與一個for循環中的模板,但是可以用代碼中的for循環寫出每一行?

回答

0

這是可能的,但不是一個好主意。模板包可用於轉義可能觸及用戶輸入的內容,並且不易使用。只需製作一些片段,然後在模板中對其進行調整。

這比試圖在代碼中構建html更安全,因爲上下文包知道轉義url或js,而不是html,並將變量的位置考慮在內。

https://play.golang.org/p/JEIjPT5ayP

package main 

import (
    "log" 
    "os" 
    "text/template" 
) 

var t = ` 
<html> 
<head> 
... 
</head> 
<body> 
{{range . }} 
    <a href = "{{.URL}}">{{.Name}}</a> 
{{end}} 
</body> 
</html> 
` 

type Location struct { 
    Name string 
    URL string 
} 

func main() { 

    // Insert read data code here 
    data := []Location{{Name: "example", URL: "https://example.com"}} 

    tmpl, err := template.New("foo").Parse(t) 
    if err != nil { 
     log.Fatal(err) 
    } 

    err = tmpl.Execute(os.Stdout, data) 
    if err != nil { 
     log.Fatal(err) 
    } 
}