因此,我将切片重命名为在函数中使用,其中一个连接到数组(如类方法)。type Points []Pointfunc (p Points) Isset(ip Point) bool { for _, i := range p { if i.Hash == ip.Hash { return true } } return false}但这没关系,因为在另一个函数中,它试图通过类型 Points 传递 slice,我遇到了一些麻烦......这是示例:func (p Points) Merge(ip Points) { fmt.Println(p)}在第一个函数中 - 我可以将我的p变量作为数组访问。在第二个 - p- 只是空数组。但是,如果我更改传递变量的类型 - 一切都会好起来的。我该怎么办...我需要指定我的合并功能。这个解决方案看起来很棒,但不起作用。
2 回答
慕桂英546537
TA贡献1848条经验 获得超10个赞
我不确定我是否理解,这是一个游戏示例,据我所知,这两个功能都按预期工作。
https://play.golang.org/p/n5ch-Wqbil
也许您在从另一个函数调用一个函数时遇到了一些问题(比如从 Merge 调用 Isset?)在这种情况下,@Games 的答案可能仍然适用。
编辑此示例显示我认为您可能正在尝试做的事情。 https://play.golang.org/p/CNEt-poKdN,它似乎工作得很好(虽然有 N^2 次性能)
红糖糍粑
TA贡献1815条经验 获得超6个赞
这是因为您需要说这Points是对Points. 您可以通过以下方式做到这一点:
func (p *Points) Isset(ip Point) bool {
for _, i := range p {
if i.Hash == ip.Hash {
return true
}
}
return false
}
注意我们如何设置*Points而不是Points. 这告诉 go 我们想要使用Points我们从中调用方法的结构的实例。
- 2 回答
- 0 关注
- 175 浏览
添加回答
举报
0/150
提交
取消