簡體   English   中英

切片邊界超出范圍 [:9],容量為 6

[英]slice bounds out of range [:9] with capacity 6

我正在開發一個 Golang 應用程序,該應用程序將從 Google 表格中獲取數據(總共有 9 列,其中一些信息為空白),然后將 output 到 a.csv 以“|”分隔。

但是,在 output 期間,我收到此錯誤: panic: runtime error: slice bounds out of range [:9] with capacity 6

這是我的代碼:

    spreadsheetId := "xxx"
    readRange := "MASTER!A1:I"
    resp, err := srv.Spreadsheets.Values.Get(spreadsheetId, readRange).ValueRenderOption("FORMATTED_VALUE").Do()
    if err != nil {
            log.Fatalf("Unable to retrieve data from sheet: %v", err)
    }

    file, err := os.Create("result.csv")
    if err != nil {
        log.Fatal("Cannot create file", err)
      }
      defer file.Close()

    for _, row := range resp.Values {

      row = row[:9]
      
      data := fmt.Sprintf("%s|%s|%s|%s|%s|%s|%s|%s|%s\n", row[0], row[1], row[2], row[3], row[4], row[5], row[6], row[7], row[8])
      var dataNew = data
      dataNew = strings.Replace(dataNew, "\n", "", -1)
      fmt.Fprint(file, dataNew + "\n")
    }

雖然它設法完美地將 output 超過 20 行放入 a.csv 中,但它崩潰然后到達只有 6 個具有一定值的單元格的行,而其他單元格為空。

如果我刪除row = row[:9] - 應用程序會在第 5 行出現恐慌,該行有 7 個單元格,總共有 9 個值。 錯誤消息是:恐慌:運行時錯誤:索引超出范圍 [7],長度為 7

我在 Go 中相當新,所以我不完全確定這里有什么問題。

您可以在行中使用連接操作,而不是手動索引每個項目。 例如:

package main

import (
    "fmt"
    "strings"
)

func main() {
    rows := []string{"1", "2", "3", "4", "5"}
    data := strings.Join(rows, "|")
    fmt.Println(data)
}

這將打印:

1|2|3|4|5

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM