如何在Golang中加载Array中的struct方法
How to load method for struct in Array in Golang
你好现在我正在尝试将 Java 转换为 Go。
但是我在使用为结构声明的方法时遇到问题。
在Array中放入结构之前,方法可以被加载和使用。
放入数组后无法调用方法
你能检查下面的代码吗?
结果告诉我 dvdCollection.DVD 未定义(类型 [15]*DVD 没有字段或方法 DVD)
type DVD struct {
name string
releaseYear int
director string
}
func (d *DVD) AddDVD(name string, releaseYear int, director string) {
d.name = name
d.releaseYear = releaseYear
d.director = director
}
func main() {
dvdCollection := [15]DVD{}
dvdCollection.AddDVD("Terminator1", 1984, "James Cameron")
}
dvdCollection
是一个数组类型的值([15]DVD
)。 AddDVD()
方法是在 DVD
类型上定义的(更具体地说是 *DVD
)。您只能对 *DVD
值调用 AddDVD()
。
例如:
dvdCollection[0].AddDVD("Terminator1", 1984, "James Cameron")
// which means (&dvdCollection[0]).AddDVD("Terminator1", 1984, "James Cameron")
fmt.Println(dvdCollection[0])
这将输出(在 Go Playground 上尝试):
{Terminator1 1984 James Cameron}
另请注意,您使用的是 array ([15]DVD
). It's rare to use an array in Go, you should likely want to use a slice. For an introduction and details, see blog post: Arrays, slices (and strings): The mechanics of 'append'
你好现在我正在尝试将 Java 转换为 Go。
但是我在使用为结构声明的方法时遇到问题。
在Array中放入结构之前,方法可以被加载和使用。
放入数组后无法调用方法
你能检查下面的代码吗?
结果告诉我 dvdCollection.DVD 未定义(类型 [15]*DVD 没有字段或方法 DVD)
type DVD struct {
name string
releaseYear int
director string
}
func (d *DVD) AddDVD(name string, releaseYear int, director string) {
d.name = name
d.releaseYear = releaseYear
d.director = director
}
func main() {
dvdCollection := [15]DVD{}
dvdCollection.AddDVD("Terminator1", 1984, "James Cameron")
}
dvdCollection
是一个数组类型的值([15]DVD
)。 AddDVD()
方法是在 DVD
类型上定义的(更具体地说是 *DVD
)。您只能对 *DVD
值调用 AddDVD()
。
例如:
dvdCollection[0].AddDVD("Terminator1", 1984, "James Cameron")
// which means (&dvdCollection[0]).AddDVD("Terminator1", 1984, "James Cameron")
fmt.Println(dvdCollection[0])
这将输出(在 Go Playground 上尝试):
{Terminator1 1984 James Cameron}
另请注意,您使用的是 array ([15]DVD
). It's rare to use an array in Go, you should likely want to use a slice. For an introduction and details, see blog post: Arrays, slices (and strings): The mechanics of 'append'