l'éditeur php Xigua a rencontré un problème intéressant lors de l'écriture d'un programme en Golang : comment imprimer deux fois la première entrée du fichier. Cette question semble simple, mais elle implique en réalité plusieurs aspects de connaissances tels que la façon de lire les entrées, de traiter les chaînes et les opérations sur les fichiers. Grâce à des recherches et une pratique approfondies, j'ai réussi à résoudre ce problème et à partager la solution avec tout le monde. Ensuite, je présenterai en détail les étapes de mise en œuvre de mon programme dans Golang.
J'essaie d'obtenir une chaîne au format CSV en entrée, puis de l'imprimer dans un fichier CSV réel. Cela fonctionne, mais il imprime la première chaîne deux fois.
Mon code ressemble à ceci :
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() }
Pour n=2 et enregistrez :
abcd, efgh, ijklmn opq, rstu, vwxyz
Le résultat ressemble à ceci :
"abcd, efgh, ijklmn" "abcd, efgh, ijklmn" "opq, rstu, vwxyz"
C'est la première fois que j'utilise Golang et je suis un peu perdu :d
Vous écrivez le csv en boucle pour que la première ligne s'imprime en double. Voici le code corrigé.
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 } }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!