如何在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'