我正在编写一个 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
}
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)
}
- 2 回答
- 0 关注
- 135 浏览
添加回答
举报
0/150
提交
取消