首頁  >  文章  >  後端開發  >  我在 Golang 中的程式在文件中列印第一個輸入兩次

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

王林
王林轉載
2024-02-10 10:03:09605瀏覽

我在 Golang 中的程序在文件中打印第一个输入两次

php小編西瓜在Golang中編寫程式時,遇到了一個有趣的問題:如何在檔案中列印第一個輸入兩次。這個問題看似簡單,但實際上涉及到如何讀取輸入、處理字串和檔案操作等多個方面的知識。透過深入研究和實踐,我成功解決了這個問題,並將解決方法分享給大家。接下來,我將詳細介紹我在Golang中的程式實作步驟。

問題內容

我嘗試取得一些 csv 格式的字串作為輸入,然後將其列印到實際的 csv 檔案中。它可以工作,但它會列印第一個字串兩次。

我的程式碼如下所示:

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, ijklmn
opq, rstu, vwxyz

輸出如下圖所示:

"abcd, efgh, ijklmn"
"abcd, efgh, ijklmn"
"opq, rstu, vwxyz"

這是我第一次使用 golang,我有點迷失:d

解決方法

您正在循環中編寫 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
    }
}

以上是我在 Golang 中的程式在文件中列印第一個輸入兩次的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:stackoverflow.com。如有侵權,請聯絡admin@php.cn刪除