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

使用 golang 省略函数参数中的数组类型

使用 golang 省略函数参数中的数组类型

Go
慕斯王 2023-06-26 17:24:52
我正在编写一个 write 方法,将值数组写入 InfluxDB我想要的是能够拥有类似的东西:func (influxClient *InfluxClient) Write(myArray []interface{}) (error) {    fmt.Print(myArray)    // Insert into DB    return nil}哪里myArray可能是一个包含任何对象的数组我尝试使用myArray []interface{}省略 myArray 的类型,但它不起作用,我得到:Cannot use 'meters' (type []models.Meter) as type []interface{}有可能实现吗?我应该怎么做 ?
查看完整描述

2 回答

?
繁华开满天机

TA贡献1816条经验 获得超4个赞

发生这种情况是因为[]models.Meter和[]interface{}对于 Go 编译器来说是两种不同的类型。


使用interface{}通常不是最佳实践。最好定义自己的类型并使用它。


话虽如此,针对您的情况最快的解决方案应该是使Write函数成为可变函数。就像下面的例子一样。


https://play.golang.org/p/KzzFMAjQvRa


func Write(myArray ...interface{}) (error) {

    fmt.Printf("Slice: %v\n", myArray)

    // Insert into DB

    return nil


}


查看完整回答
反对 回复 2023-06-26
?
LEATH

TA贡献1936条经验 获得超6个赞

如果您先复制到 [] 接口实例,这是可能的


func main() {


   // Copy from your explicit type array

   var interfaceSlice []interface{} = make([]interface{}, len(models.Meter))


   for i, Modelvalue := range models.Meter {

       interfaceSlice[i] = Modelvalue

   }    


   influxClient.Write(interfaceSlice)

}

查看完整回答
反对 回复 2023-06-26
  • 2 回答
  • 0 关注
  • 135 浏览
慕课专栏
更多

添加回答

举报

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