【问题标题】:How to invoke methods with variant interface when you have array of interface?当您有接口数组时,如何调用具有变体接口的方法?
【发布时间】:2017-01-25 23:12:07
【问题描述】:

如何调用具有以下签名的方法

SomeFunc( args ...interface{})

[]interface{} 类型的变量是否可以调用上述方法?如果是怎么办?

谢谢

【问题讨论】:

  • 这里没有太多的信息可以继续,但如果我理解正确的话,你应该能够调用该函数并将你的两个参数传递给它。 play.golang.org/p/ZUPbJYYCt7
  • 实际上我上面的评论可能不适用于您的具体情况。问题是您以小写字母开头的函数命名,这在 Go 中意味着它是一个私有函数并且仅在其自己的包中可用。您应该以大写字母开头任何可公开访问的函数(将在当前包之外调用的任何函数) - 例如:SomeFunc
  • @Mike 谢谢,但是您的代码将接口数组作为 SomeFunc 方法中的单个接口play.golang.org/p/9dK4QjmW0U
  • 很高兴你找到了适合你的东西。 :)

标签: go


【解决方案1】:
func main() {
    b := []interface{}{"hello", "Hi"}
    SomeFunc(b...) 
}

通过在 b 数组后使用 ... 解决了该问题。

更多详情请见Unpacking slice of slicesGolang Join array interface

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-19
    • 2019-10-12
    • 2017-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多