所以,我将我的切片重命名为在函数中使用,哪一个连接到数组(如类方法)。
type Points []Point
func (p Points) Isset(ip Point) bool {
for _, i := range p {
if i.Hash == ip.Hash {
return true
}
}
return false
}
但它并不重要,因为另一个函数,其中一个试图通过类型点传递切片,我有一些麻烦......
以下是示例:
func (p Points) Merge(ip Points) {
fmt.Println(p)
}
在第一个函数中 - 我可以作为数组访问我的p
变量。在第二个 - p
- 只是空数组。但如果我改变传递变量的类型 - 一切都会好的。
我该怎么做...我需要指定合并功能。这个解决方案看起来很棒,但不起作用。
答案 0 :(得分:2)
我不确定我理解,这是一个播放示例,显示两个函数按照我的预期正常工作。
https://play.golang.org/p/n5ch-Wqbil
也许你遇到了一个问题,从另一个调用一个函数(比如从Merge调用Isset可能吗?)在这种情况下@Games的答案可能仍然适用。
编辑这个例子展示了我可能想要做的思考。 https://play.golang.org/p/CNEt-poKdN它似乎工作得很好(虽然有N ^ 2时间表现)
答案 1 :(得分:1)
这是因为您需要说Points
是对Points
实例的引用。您可以通过以下方式执行此操作:
func (p *Points) Isset(ip Point) bool {
for _, i := range p {
if i.Hash == ip.Hash {
return true
}
}
return false
}
请注意我们如何设置*Points
而不是Points
。这说明我们想要使用我们调用该方法的Points
结构的实例。