1 回答

TA貢獻1824條經驗 獲得超6個贊
您可以執(zhí)行以下操作:
var cols []string
var rows [][]interface{}
for key, _ := range result[0] {
cols = append(cols, key)
}
for _, res := range result {
vals := make([]interface{}, len(cols))
for i, col := range cols {
vals[i] = res[col]
}
rows = append(rows, vals)
}
data := struct {
Title string
Columns []string
Rows [][]interface{}
}{
Title: "My page",
Columns: cols,
Rows: rows,
}
并且需要相應地修改 HTML:
<table>
<tr>
{{range .Columns}}<th>{{ . }}</th>{{else}}<div><strong>no rows</strong></div>{{end}}
</tr>
{{- range .Rows}}
<tr>
{{range .}}<td>{{ . }}</td>{{end}}
</tr>
{{- end}}
</table>
https://go.dev/play/p/MPJOMlfQ488
請注意,在 Go 中,映射是無序的,因此循環(huán)result[0]
聚合列名將產生一個無序的[]string
. 這意味著多次查看您的 HTML 頁面的用戶將看到不一致的輸出。如果這是您想避免的事情,您可以選擇使用 package 對列進行排序,或者您可以選擇以某種方式sort
保留順序。sql.Rows.Columns
- 1 回答
- 0 關注
- 328 瀏覽
添加回答
舉報