Go 正在尝试创建MovingVarage类型的切片

Go 正在尝试创建MovingVarage类型的切片,go,slice,moving-average,Go,Slice,Moving Average,我正在使用RobinUS2/golang移动平均库来计算移动平均数,但我无法将这些平均数的一部分组合起来计算多变量的MA ma := []movingaverage.MovingAverage{} ma[0] = movingaverage.New(15) ma[0].Add(3.14) 有什么不对劲吗?我得到一个索引超出范围的错误。谢谢 您需要使用 ma := make(movingaverage.MovingAverage, 5) 它给出一个容量为5、长度为5的切片,每个

我正在使用RobinUS2/golang移动平均库来计算移动平均数,但我无法将这些平均数的一部分组合起来计算多变量的MA

ma := []movingaverage.MovingAverage{}
    ma[0] = movingaverage.New(15)
    ma[0].Add(3.14)

有什么不对劲吗?我得到一个索引超出范围的错误。谢谢

您需要使用

ma := make(movingaverage.MovingAverage, 5)
它给出一个容量为5、长度为5的切片,每个条目都设置为零值

不过,最好像您那样初始化它,然后使用

ma = append(ma, movingaverage.New(15)) 
如果您知道最终的切片有多大,您可以使用

ma := make(movingaverage.MovingAverage, 0, 5)

这将为您提供一个长度为0但容量为5的片,这样您就不必重复进行内存分配和移动

ma
的长度为0,因此您无法索引任何内容。
ma
应该有固定数量的值吗?是的,我知道maYou的长度并不意味着将容量设置为5和长度为5。谢谢,我忽略了它。使用
append
会导致不必要的分配和复制操作。如果事先知道必要的大小,最好使用必要的容量初始化切片,并将各个切片索引设置为各自的值。Marcus和Jim,你们都是对的-我将展开答案以捕获你们的评论