Ich kann nicht finden file.ReadLine
Funktion in Go.
Wie kann man eine Datei Zeile für Zeile lesen?
Ich kann nicht finden file.ReadLine
Funktion in Go.
Wie kann man eine Datei Zeile für Zeile lesen?
import (
"bufio"
"os"
)
var (
reader = bufio.NewReader(os.Stdin)
)
func ReadFromStdin() string{
result, _ := reader.ReadString('\n')
witl := result[:len(result)-1]
return witl
}
Hier ist ein Beispiel mit der Funktion ReadFromStdin()
es ist wie fmt.Scan(&name)
aber es nimmt alle Zeichenketten mit Leerzeichen wie: "Hallo mein Name ist ..."
var name string = ReadFromStdin()
println(name)
Die Scan*-Funktionen sind hier von großem Nutzen. Hier ist eine leicht modifizierte Version von Beispiel für einen Wortscanner aus den Go-Lang-Dokumenten, um Zeilen aus einer Datei zu scannen.
package main
import (
"bufio"
"fmt"
"os"
"strings"
)
func main() {
// An artificial input source.
const input = "Now is the winter of our discontent,\nMade glorious summer by this sun of York.\n"
scanner := bufio.NewScanner(strings.NewReader(input))
// Set the split function for the scanning operation.
scanner.Split(bufio.ScanLines)
// Count the lines.
count := 0
for scanner.Scan() {
fmt.Println(scanner.Text())
count++
}
if err := scanner.Err(); err != nil {
fmt.Fprintln(os.Stderr, "reading input:", err)
}
fmt.Printf("%d\n", count)
}
In der neuen Version von Go 1.16 können wir das Paket embed verwenden, um den Inhalt der Datei wie unten gezeigt zu lesen.
package main
import _"embed"
func main() {
//go:embed "hello.txt"
var s string
print(s)
//go:embed "hello.txt"
var b []byte
print(string(b))
//go:embed hello.txt
var f embed.FS
data, _ := f.ReadFile("hello.txt")
print(string(data))
}
Weitere Einzelheiten finden Sie unter https://tip.golang.org/pkg/embed/ Und https://golangtutorial.dev/tips/embed-files-in-go/
Dieses Beispiel ist eine gute Demonstration der embed
Paket, aber ich glaube nicht, dass Ihre Antwort auf die Kernstück der Frage. OP möchte eine Datei einlesen Zeile für Zeile . Trotzdem haben Sie ihm eine sehr gute und idiomatische Möglichkeit geboten, eine ganze Datei einzulesen.
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.
9 Stimmen
Ab Go1.1 ist bufio.Scanner die beste Möglichkeit, dies zu tun.