为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
蝴蝶不菲 2023-05-22 15:59:42
我有一个这样的结构: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


查看完整回答
反对 回复 2023-05-22
  • 1 回答
  • 0 关注
  • 84 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信