【发布时间】:2019-12-06 13:35:04
【问题描述】:
我尝试搜索,但找不到如何执行此操作。 我想获取我的结构的实例并将它们存储在一个列表中,然后遍历它们并在它们上调用一个函数。
type comicBook struct {
Title string
Writer string
Artist string
Publisher string
Year int
Pages int
Grade float32
}
func (c comicBook) PrintInfo() {
fmt.Println(c.Title, "written by", c.Writer, "drawn by", c.Artist, "published by", c.Publisher, "in", c.Year)
fmt.Println("Pages:", c.Pages)
fmt.Println("Grade:", c.Grade)
}
这很好用。
c := comicBook.NewComicBook(
"Mr. GoToSleep",
"Tracey Hatchet",
"Jewel Tampson",
"DizzyBooks Publishing Inc.",
1997,
14,
6.5,
)
c.PrintInfo()
c2 := comicBook.NewComicBook("Epic Vol. 1",
"Ryan N. Shawn",
"Phoebe Paperclips",
"DizzyBooks Publishing Inc.",
2013, 160, 9.0)
c2.PrintInfo()
将它们存储在列表中不会。
comicBookList := list.New()
comicBookList.PushBack(c)
comicBookList.PushBack(c2)
fmt.Println("\nNow from a list!\n")
for comic := comicBookList.Front(); comic != nil; comic = comic.Next() {
comic.Value.PrintInfo()
}
失败,comic.Value.PrintInfo undefined (type interface {} is interface with no methods)
【问题讨论】:
-
你可能想查看这篇帖子stackoverflow.com/questions/18926303/…。
-
您使用的是什么列表类型?为什么要使用它而不是只使用切片?
-
@Adrian 我刚刚学习 Go,来自 C#。我曾期望 List 是一个基本容器,但我还不知道切片。 icza 给出的答案解决了我的问题。
-
我建议从官方文档开始。以Tour of Go 为例,它涵盖了所有语言基础知识(包括切片)。另请阅读Effective Go,它涵盖了如何思考和编写好的 Go 代码的基础知识。