亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我在 Golang 中的程序在文件中兩次打印第一個輸入

我在 Golang 中的程序在文件中兩次打印第一個輸入

Go
阿波羅的戰車 2023-03-21 10:26:58
我嘗試獲取一些 CSV 格式的字符串作為輸入,然后將其打印到實際的 CSV 文件中。它有效,但它打印第一個字符串 2 次。我的代碼如下所示:func main() {    scanner := bufio.NewScanner(os.Stdin)    n := 0    inputFile, err := os.Create("input.csv") //create the input.csv file    if err != nil {        log.Fatal(err)    }    csvwriter := csv.NewWriter(inputFile)    fmt.Println("How many records ?")    fmt.Scanln(&n)    fmt.Println("Enter the records")    var lines [][]string    for i := 0; i < n; i++ {        scanner.Scan()        text := scanner.Text()        lines = append(lines, []string{text})        err := csvwriter.WriteAll(lines)        if err != nil {            return        }    }    csvwriter.Flush()    inputFile.Close()}對于 n=2 和記錄:abcd, efgh, ijklmnopq, rstu, vwxyz輸出如下所示:"abcd, efgh, ijklmn""abcd, efgh, ijklmn""opq, rstu, vwxyz"這是我第一次使用 Golang,我有點迷茫 :D
查看完整描述

2 回答

?
翻翻過去那場雪

TA貢獻2065條經驗 獲得超14個贊

csvwriter.WriteAll(lines) WriteAll使用 Write將多個 CSV 記錄寫入w,然后調用 Flush,返回來自 Flush 的任何錯誤。


每次循環讀取并刷新到文件時,您都會附加行。


func main() {

    scanner := bufio.NewScanner(os.Stdin)

    n := 0

    inputFile, err := os.Create("input.csv") //create the input.csv file

    if err != nil {

        log.Fatal(err)

    }

    defer inputFile.Close()


    csvwriter := csv.NewWriter(inputFile)


    fmt.Println("How many records ?")

    fmt.Scanln(&n)

    fmt.Println("Enter the records")

    var lines [][]string

    for i := 0; i < n; i++ {

        scanner.Scan()

        text := scanner.Text()

        lines = append(lines, []string{text})

    }

    err = csvwriter.WriteAll(lines)

    if err != nil {

        return

    }

    

}


查看完整回答
反對 回復 2023-03-21
?
江戶川亂折騰

TA貢獻1851條經驗 獲得超5個贊

您正在循環編寫 csv,以便第一行打印成雙。這是更正后的代碼。


package main


import (

    "bufio"

    "encoding/csv"

    "fmt"

    "log"

    "os"

)


func main() {

    scanner := bufio.NewScanner(os.Stdin)

    n := 0

    inputFile, err := os.Create("input.csv") //create the input.csv file

    if err != nil {

        log.Fatal(err)

    }

    defer func() {

        inputFile.Close()

    }()


    csvwriter := csv.NewWriter(inputFile)

    defer func() {

        csvwriter.Flush()

    }()

    fmt.Println("How many records ?")

    fmt.Scanln(&n)

    fmt.Println("Enter the records")

    var lines [][]string

    for i := 0; i < n; i++ {

        scanner.Scan()

        text := scanner.Text()

        lines = append(lines, []string{text})


    }

    err = csvwriter.WriteAll(lines)

    if err != nil {

        return

    }

}


查看完整回答
反對 回復 2023-03-21
  • 2 回答
  • 0 關注
  • 98 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號