猿问

将切片附加到 csv golang

我试图创建一个简单的函数来将切片值附加到创建的 csv 文件的下一列。目的是在 test.csv 中有这种风格


|列A |列B|


|标头1 |标头2|


|第一值| 第二值 |


(抱歉格式错误,但是一旦生成了 text.csv,如果我们打开 text.csv 文件,想法是将“SECONDVALUE”放在“FIRSTVALUE”之后的下一列中(如上图)..并且每次调用该函数时,它都会在同一行中的前一列之后继续追加下一个值)。


这是我得到的程度,但是它直接将 SECONDVALUE 附加到 FIRSTVALUE 的同一列上..(所以我得到的不是 "|FIRSTVALUE | SECONDVALUE" ,而是 "|FIRSTVALUESECONDVALUE|" )


package main


import (

    "encoding/csv"

    "fmt"

    "os"

    "strings"

)



func main() {

    callfunc()

}


func callfunc() int {


    testval1 := []string{"FIRST VALUE"}

    test(testval1, "test.csv", 1)


    testval2 := []string{"SECOND VALUE"}

    test(testval2, "test.csv", 0) //I want this to be added to the column next to first value 


    return 1

}



func test(lines []string, path string, header int) {


    var hdr = []string{"header1", "header2"}


    fmt.Println("inside the method..\n")


    file, err := os.OpenFile(path, os.O_APPEND|os.O_WRONLY, 0600)

    if err != nil {

        if file, err = os.Create(path); err != nil {

            return

        }

    }

    defer file.Close()


    writer := csv.NewWriter(file)


    if header == 1 {

        returnError := writer.Write(hdr)

        if returnError != nil {

            fmt.Println(returnError)

        }

    }


    writer.Flush()


    for _, value := range lines {

        _, err := file.WriteString(strings.TrimSpace(value))

        if err != nil { //exception handler

            fmt.Println(err)

            break

        }

    }


    writer.Flush()

}

如何修复上面的代码行,使“SECONDVALUE”成为第二列,而不是“FIRSTVALUE”所在的同一列。


慕沐林林
浏览 202回答 2
2回答
随时随地看视频慕课网APP

相关分类

Go
我要回答