1

作成した csv ファイルの次の列にスライス値を追加する簡単な関数を作成しようとしました。目的は、このスタイルを test.csv に含めることです

|列A |列B|

|ヘッダー1 |ヘッダー2|

|FIRSTVALUE| 2 番目の値 |

(形式が悪くて申し訳ありませんが、text.csv が生成されたら、text.csv ファイルを開くと、"FIRSTVALUE" の次の列に "SECONDVALUE" を配置することが考えられます (上記の図)..関数が呼び出されるたびに、同じ行の前の列の後に次の値を追加し続けます)。

これは私が得た距離ですが、FIRSTVALUEの同じ列にSECONDVALUEを直接追加しています..(したがって、 "|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」が 2 番目の列になり、「FIRSTVALUE」と同じ列にならないようにする方法。

4

2 に答える 2