我有一个这样的结构:type Headers struct { header string valueFromCalculation string value float64}我需要三个切片,每个切片都有值:var headerLabels []stringvar values []float64var valueFromCalculation []string[January February March April May June July August September TOTAL][175 167 148 142 125 114 130 120 30 1151][15% 15% 13% 12% 11% 10% 11% 10% 3%]现在我想通过组合这些来创建一个新的 Headers 片段。有一个问题,我相信我正在解决 - valueFromCalcuation 的长度比其余切片少 1要创建新切片,我想这样做:sliceOfHeaders := []*Headers{}for i := 0; i <= len(headerLabels); i++ {headerEntry := new(Headers)headerEntry.header = headerLabels[i]headerEntry.value = values[i]if i == len(headerLabels) { headerEntry.valueFromCalculation = ""} else { headerEntry.valueFromCalculation = valueFromCalculation[i]}sliceOfHeaders = append(sliceOfHeaders, headerEntry)}它抛出以下错误:“恐慌:运行时错误:索引超出范围”怎么会这样?我正在考虑 valueFromCalculation 长度比其他结构属性少一个的索引问题在这里你可以看到我想开始循环之前的输出:header --> [January February March April May June July August September TOTAL]value --> [175 167 148 142 125 114 130 120 30 1151]valueFromCalculation --> [15% 15% 13% 12% 11% 10% 11% 10% 3%]header length --> 10value length --> 10valueFromCalculation length --> 9请问有人可以帮我吗?我看不出我做错了什么我正在考虑第三个属性的长度比其余属性少 1
1 回答
素胚勾勒不出你
TA贡献1827条经验 获得超9个赞
看来您在 headerLabels 上循环一个索引的时间太长了。
尝试更改 i <= len(headerLabels)
为i < len(headerLabels)
和
if i == len(headerLabels)
到if i == len(headerLabels) - 1
- 1 回答
- 0 关注
- 111 浏览
添加回答
举报
0/150
提交
取消