如何从循环中填充变量args

时间:2017-07-26 12:43:46

标签: arrays go variadic-functions

对于以下示例,我需要从文件中读取值(没问题)并将其放入方法" func(r * Regression)Train(d ... * dataPoint)"作为数据点。这有效:

r.Train(
    regression.DataPoint(1, []float64{1, 1, 1}),
    regression.DataPoint(4, []float64{2, 2, 2}),
    regression.DataPoint(9, []float64{3, 3, 3}),
)

但是我想把它放在这样的循环中:

for i := 1; i <= 4; i++ {
   ??? regression.DataPoint(i*i, []float64{i, i, i}), ???
}

我不能使用dataPoint数组,因为它只在该包中可见。这是完整的源代码:

https://github.com/sajari/regression(参见示例用法)

非常感谢,

马切伊

2 个答案:

答案 0 :(得分:1)

从您关联的页面:

Note: You can also add data points one by one.

因此你需要:

for i := 1; i <= 4; i++ {
   r.Train(regression.DataPoint(i*i, []float64{i, i, i}))
}

答案 1 :(得分:0)

@ Milo的答案可能最适合您的特定情况,但对于具有可变参数函数的一般情况,您可以将元素附加到切片,然后使用切片作为可变参数列表:

r.Train(points...)

不幸的是,回归库设计得不是很好,因为它有公开的函数来接收和返回未曝光的类型,让你无法使用它们。