猿问

如何将结构数组传递给我的结构函数

因此,我将切片重命名为在函数中使用,其中一个连接到数组(如类方法)。


type Points []Point



func (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- 只是空数组。但是,如果我更改传递变量的类型 - 一切都会好起来的。


我该怎么办...我需要指定我的合并功能。这个解决方案看起来很棒,但不起作用。


智慧大石
浏览 176回答 2
2回答

慕桂英546537

我不确定我是否理解,这是一个游戏示例,据我所知,这两个功能都按预期工作。https://play.golang.org/p/n5ch-Wqbil也许您在从另一个函数调用一个函数时遇到了一些问题(比如从 Merge 调用 Isset?)在这种情况下,@Games 的答案可能仍然适用。编辑此示例显示我认为您可能正在尝试做的事情。 https://play.golang.org/p/CNEt-poKdN,它似乎工作得很好(虽然有 N^2 次性能)

红糖糍粑

这是因为您需要说这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我们从中调用方法的结构的实例。
随时随地看视频慕课网APP

相关分类

Go
我要回答