为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
智慧大石 2022-01-10 10:40:58
因此,我将切片重命名为在函数中使用,其中一个连接到数组(如类方法)。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 次性能)


查看完整回答
反对 回复 2022-01-10
?
红糖糍粑

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我们从中调用方法的结构的实例。


查看完整回答
反对 回复 2022-01-10
  • 2 回答
  • 0 关注
  • 175 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信