发布
社区首页 >问答首页 >如何将struct数组传递给struct函数

如何将struct数组传递给struct函数
EN

Stack Overflow用户
提问于 2016-05-04 08:43:33
回答 2查看 58关注 0票数 0

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

代码语言:javascript
代码运行次数:0
复制
type Points []Point


func (p Points) Isset(ip Point) bool {
     for _, i := range p {
         if i.Hash == ip.Hash {
             return true
         }
     }
     return false
}

但这不重要,因为在另一个函数中,一个试图用类型点传递切片,我有一些麻烦……

下面是一个例子:

代码语言:javascript
代码运行次数:0
复制
func (p Points) Merge(ip Points) {
    fmt.Println(p)
}

在第一个函数中,我可以作为数组访问我的p变量。在第二个- p -只是空数组。但是如果我改变类型的传递变量-一切都会好的。

我该怎么办..。我需要指定合并函数。这个解决方案看上去很棒,但不管用。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-05-04 09:04:08

我不确定我是否理解,这是一个播放的例子,显示这两个功能按我所能预料的方式工作。

https://play.golang.org/p/n5ch-Wqbil

可能您遇到了从另一个函数调用一个函数时遇到的问题(比如从Merge调用Isset,可能是吗?)在这种情况下,@Games的答案可能仍然适用。

编辑这个示例显示了我认为您可能想要做的事情。https://play.golang.org/p/CNEt-poKdN和它似乎工作得很好(尽管它具有N^2的时间性能)

票数 2
EN

Stack Overflow用户

发布于 2016-05-04 08:52:49

这是因为您需要说Points是对Points实例的引用。您可以通过以下方法来做到这一点:

代码语言:javascript
代码运行次数:0
复制
func (p *Points) Isset(ip Point) bool {
     for _, i := range p {
         if i.Hash == ip.Hash {
             return true
         }
     }
     return false
}

注意我们是如何设置*Points而不是Points的。这告诉go,我们希望使用我们已经调用方法的Points结构的实例。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37022633

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档