登录
首页 >  Golang >  Go问答

如何覆盖结构切片而不是切片结构

来源:Golang技术栈

时间:2023-04-09 19:09:20 145浏览 收藏

最近发现不少小伙伴都对Golang很感兴趣,所以今天继续给大家介绍Golang相关的知识,本文《如何覆盖结构切片而不是切片结构》主要内容涉及到golang等等知识点,希望能帮到你!当然如果阅读本文时存在不同想法,可以在评论中表达,但是请勿使用过激的措辞~

问题内容

在玩过 Go HTML 模板之后,我发现的所有在模板中循环对象的示例都是将切片结构传递给模板,有点像这个例子:

type UserList struct {
    Id   []int
    Name []string
}

var templates = template.Must(template.ParseFiles("main.html"))

func rootHandler(w http.ResponseWriter, r *http.Request) {
    users := UserList{
        Id:   []int{0, 1, 2, 3, 4, 5, 6, 7},
        Name: []string{"user0", "user1", "user2", "user3", "user4"},
    }
    templates.ExecuteTemplate(w, "main", &users)
}

“主要”模板为:

{{define "main"}}
    {{range .Name}}
        {{.}}
    {{end}}
{{end}}

这可行,但我不明白如果我仅在 .Name 属性上进行范围,我应该如何在其对应的名称旁边显示每个 ID。我会发现将每个用户视为一个对象以在显示时对其属性进行分组更合乎逻辑。

因此我的问题是:

如果我想将一部分结构传递给模板怎么办? 使这项工作的语法是什么?我还没有找到或理解如何在官方 html/模板文档中。我想象的东西看起来像这样:

type User struct {
    Id   int
    Name string
}
type UserList []User
var myuserlist UserList = ...

和一个看起来有点像这样的模板:(这里的语法是故意错误的,只是为了理解)

{{define "main"}}
    {{for each User from myuserlist as myuser}}
        {{myuser.Id}}
        {{myuser.Name}}
    {{end}}
{{end}}

正确答案

采用:

{{range .}}
    {{.Id}}
    {{.Name}}
{{end}}

为模板。
这是一个示例:http
://play.golang.org/p/A4BPJOcfpB 您需要在包概述中阅读有关“点”的更多信息,以了解如何正确使用它。http://golang.org/pkg/text/template/#pkg- overview(查看管道部分)

以上就是《如何覆盖结构切片而不是切片结构》的详细内容,更多关于golang的资料请关注golang学习网公众号!

声明:本文转载于:Golang技术栈 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>