您好现在我正在尝试将 Java 转换为 Go。但是我在使用为结构声明的方法时遇到问题。在将结构放入数组之前,可以加载和使用方法。将其放入数组后,我无法为其调用方法。你能检查下面的代码吗?结果告诉我 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")}
1 回答
米脂
TA贡献1836条经验 获得超3个赞
dvdCollection是数组类型 ( [15]DVD) 的值。该AddDVD()方法是在DVD类型上定义的(更具体地说是*DVD)。您只能调用AddDVD()一个*DVD值。
例如:
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}
另请注意,您使用的是数组( [15]DVD
)。在 Go 中很少使用数组,您可能想要使用slice。有关介绍和详细信息,请参阅博客文章:数组、切片(和字符串):“附加”的机制
- 1 回答
- 0 关注
- 73 浏览
添加回答
举报
0/150
提交
取消