从 3 个单独的切片(每个结构属性一个切片)创建新的组合结构切片时索引超出范围

我有一个这样的结构:


type Headers struct {

    header            string

    valueFromCalculation    string

    value            float64

}

我需要三个切片,每个切片都有值:


var headerLabels []string

var values []float64

var 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 --> 10

value length --> 10

valueFromCalculation length --> 9

请问有人可以帮我吗?我看不出我做错了什么


我正在考虑第三个属性的长度比其余属性少 1


蝴蝶不菲
浏览 112回答 1
1回答

素胚勾勒不出你

看来您在 headerLabels 上循环一个索引的时间太长了。尝试更改&nbsp;i <= len(headerLabels)为i < len(headerLabels)和if i == len(headerLabels)到if i == len(headerLabels) - 1
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go