Zu den erweiterten E/A-Vorgängen in Go gehören:
1. Gepufferte E/A mit „bufio“-Paket:
- Gepufferte Reader: Verwenden Sie „bufio.NewReader“, um einen gepufferten Reader zu erstellen, der große Datenmengen effizient verarbeiten kann.- Gepufferte Writer: Verwenden Sie „bufio.NewWriter“, um einen gepufferten Writer zu erstellen, der große Datenmengen effizient verarbeiten kann.
2. Tee-Leser:
- TeeReader: Verwenden Sie „io.TeeReader“, um die Eingabedaten in zwei Streams aufzuteilen. Dies ist nützlich, wenn Sie die Daten auf zwei verschiedene Arten verarbeiten müssen.3. Rohrleitungsdaten:
- Pipe: Verwenden Sie „io.Pipe“, um eine synchrone In-Memory-Pipe zu erstellen, die zum Verbinden von Code, der einen „io.Reader“ erwartet, mit Code, der einen „io.Writer“ erwartet, verwendet werden kann.4. Dateien lesen und schreiben:
- Lesen aus Dateien: Verwenden Sie „os.Open“, um eine Datei im schreibgeschützten Modus zu öffnen, und verwenden Sie dann „bufio.NewReader“, um einen Reader zu erstellen.- Schreiben in Dateien: Verwenden Sie „os.Create“ oder „os.OpenFile“, um eine Datei im Schreibmodus zu erstellen oder zu öffnen, und verwenden Sie dann „bufio.NewWriter“, um einen Writer zu erstellen.
5. Umgang mit Parallelität:
- Sichere Dateiverwaltung: Verwenden Sie „defer“, um sicherzustellen, dass Dateihandles ordnungsgemäß geschlossen werden, um Ressourcenlecks zu vermeiden.6. Verwenden von „io.Copy“:
- Daten kopieren: Verwenden Sie „io.Copy“, um Daten von einem Reader auf einen anderen Writer zu kopieren.7. Verwenden von „io.CopyN“:
- Kopieren von Daten mit einem Limit: Verwenden Sie „io.CopyN“, um eine begrenzte Datenmenge von einem Reader auf einen anderen Writer zu kopieren.8. Verwendung von „io.ReadAtLeast“:
- Mindestens eine bestimmte Menge lesen: Verwenden Sie „io.ReadAtLeast“, um mindestens eine bestimmte Datenmenge von einem Lesegerät zu lesen.9. Verwendung von „io.ReadFull“:
- Vollständige Datenmenge lesen: Verwenden Sie „io.ReadFull“, um die gesamte Datenmenge von einem Lesegerät zu lesen.10. Verwendung von „io.WriteString“:
- Schreiben eines Strings: Verwenden Sie „io.WriteString“, um einen String an einen Writer zu schreiben.11. Verwendung von „io.WriteString“ mit einem Puffer:
- Schreiben eines Strings mit einem Puffer: Verwenden Sie „io.WriteString“ mit einem Puffer, um einen String effizient an einen Writer zu schreiben.12. Verwendung von „io.MultiReader“:
- Lesen aus mehreren Quellen: Verwenden Sie „io.MultiReader“, um aus mehreren Quellen zu lesen.13. Verwendung von „io.MultiWriter“:
- Schreiben an mehrere Ziele: Verwenden Sie „io.MultiWriter“, um an mehrere Ziele zu schreiben.14. Verwendung von „io.PipeLine“:
- Erstellen einer Pipeline: Verwenden Sie „io.PipeLine“, um eine Pipeline von Lesern und Autoren zu erstellen.15. Verwendung von „io.ReadFull“ mit einem Puffer:
- Lesen der gesamten Datenmenge mit einem Puffer: Verwenden Sie „io.ReadFull“ mit einem Puffer, um die gesamte Datenmenge effizient von einem Lesegerät zu lesen.Diese erweiterten E/A-Vorgänge in Go bieten mehr Flexibilität und Kontrolle darüber, wie Daten gelesen und geschrieben werden, und erleichtern so die effiziente Abwicklung komplexer E/A-Aufgaben.
Zitate:[1] https://www.developer.com/linguals/input-output-golang/
[2] https://www.educative.io/courses/advanced-techniques-in-go-programming/file-i-o
[3] https://www.codingexplorations.com/blog/mastering-io-readers-writers-go
[4] https://dev.to/romulogatto/file-io-in-go-488d
[5] https://hyperskill.org/learn/step/14527