go - 用golang省略函数参数中的数组类型
问题描述
我正在编写一个写入方法,将一个值数组写入 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{}
有可能实现吗?
我应该怎么做 ?
解决方案
发生这种情况是因为[]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
}
推荐阅读
- automated-tests - 空手道 -使用 Javascript从元素获取 URL
- amazon-athena - AWS Athena 结构不解析 JSON 字符串
- ruby-on-rails - 动作控制器参数在来自 Rspec 的多个更新请求上不刷新
- java - 您是否应该在调用 getParentFragment() 时检查片段是否为 isAdded()?
- python - 如何将延迟的python dask的输出(来自xarray)保存到pandas数据帧中
- angularjs - sidenav Angular中的水平导航
- c# - 使用构造函数将文件路径传递给方法
- .net-core - 将 flac STREAMINFO 标头从 ffmpeg 写入流
- assembly - 优化从 C 到汇编的空白筛选
- sas - NOT+IN SAS 运算符组合,这有效吗?找不到文档