Οι προηγμένες λειτουργίες εισόδου/εξόδου στο Go περιλαμβάνουν:
1. Είσοδος/Έξοδος στην προσωρινή μνήμη με πακέτο «bufio»:
- Αναγνώστες προσωρινής αποθήκευσης: Χρησιμοποιήστε το "bufio.NewReader" για να δημιουργήσετε έναν αναγνώστη προσωρινής αποθήκευσης που μπορεί να χειριστεί μεγάλες ποσότητες δεδομένων αποτελεσματικά.- Εγγραφές buffered: Χρησιμοποιήστε το "bufio.NewWriter" για να δημιουργήσετε ένα πρόγραμμα εγγραφής σε προσωρινή μνήμη που μπορεί να χειριστεί αποτελεσματικά μεγάλες ποσότητες δεδομένων.
2. Τα αναγνώστες:
- TeeReader: Χρησιμοποιήστε το «io.TeeReader» για να χωρίσετε τα δεδομένα εισόδου σε δύο ροές. Αυτό είναι χρήσιμο όταν χρειάζεται να επεξεργαστείτε τα δεδομένα με δύο διαφορετικούς τρόπους.3. Δεδομένα σωληνώσεων:
- Pipe: Χρησιμοποιήστε το "io.Pipe" για να δημιουργήσετε έναν σύγχρονο σωλήνα στη μνήμη που μπορεί να χρησιμοποιηθεί για τη σύνδεση κώδικα που περιμένει "io.Reader" με τον κώδικα που αναμένει "io.Writer".4. Ανάγνωση και σύνταξη αρχείων:
- Ανάγνωση από αρχεία: Χρησιμοποιήστε το "os.Open" για να ανοίξετε ένα αρχείο σε λειτουργία μόνο για ανάγνωση και, στη συνέχεια, χρησιμοποιήστε το "bufio.NewReader" για να δημιουργήσετε έναν αναγνώστη.- Εγγραφή σε αρχεία: Χρησιμοποιήστε το "os.Create" ή το "os.OpenFile" για να δημιουργήσετε ή να ανοίξετε ένα αρχείο σε λειτουργία εγγραφής και, στη συνέχεια, χρησιμοποιήστε το "bufio.NewWriter" για να δημιουργήσετε ένα πρόγραμμα εγγραφής.
5. Συγχρονισμός χειρισμού:
- Ασφαλής χειρισμός αρχείων: Χρησιμοποιήστε το "defer" για να βεβαιωθείτε ότι οι λαβές αρχείων είναι σωστά κλειστές για την αποφυγή διαρροών πόρων.6. Χρησιμοποιώντας το `io.Copy`:
- Αντιγραφή δεδομένων: Χρησιμοποιήστε το "io.Copy" για να αντιγράψετε δεδομένα από έναν αναγνώστη σε άλλο πρόγραμμα εγγραφής.7. Χρησιμοποιώντας το `io.CopyN`:
- Αντιγραφή δεδομένων με όριο: Χρησιμοποιήστε το "io.CopyN" για να αντιγράψετε περιορισμένο αριθμό δεδομένων από έναν αναγνώστη σε άλλο πρόγραμμα εγγραφής.8. Χρησιμοποιώντας το `io.ReadAtLeast`:
- Διαβάζοντας τουλάχιστον ένα συγκεκριμένο ποσό: Χρησιμοποιήστε το «io.ReadAtLeast» για να διαβάσετε τουλάχιστον ένα συγκεκριμένο ποσό δεδομένων από έναν αναγνώστη.9. Χρησιμοποιώντας το `io.ReadFull`:
- Διαβάζοντας το πλήρες ποσό: Χρησιμοποιήστε το «io.ReadFull» για να διαβάσετε ολόκληρο τον όγκο δεδομένων από έναν αναγνώστη.10. Χρησιμοποιώντας το `io.WriteString`:
- Γράψιμο μιας συμβολοσειράς: Χρησιμοποιήστε το `io.WriteString` για να γράψετε μια συμβολοσειρά σε έναν συγγραφέα.11. Χρήση «io.WriteString» με buffer:
- Γράψιμο μιας συμβολοσειράς με buffer: Χρησιμοποιήστε το «io.WriteString» με buffer για να γράψετε μια συμβολοσειρά σε έναν συγγραφέα αποτελεσματικά.12. Χρησιμοποιώντας το `io.MultiReader`:
- Ανάγνωση από πολλαπλές πηγές: Χρησιμοποιήστε το «io.MultiReader» για ανάγνωση από πολλές πηγές.13. Χρήση «io.MultiWriter»:
- Γράψιμο σε πολλούς προορισμούς: Χρησιμοποιήστε το «io.MultiWriter» για να γράψετε σε πολλούς προορισμούς.14. Χρησιμοποιώντας το `io.PipeLine`:
- Δημιουργία Pipeline: Χρησιμοποιήστε το "io.PipeLine" για να δημιουργήσετε μια σειρά από αναγνώστες και συγγραφείς.15. Χρήση «io.ReadFull» με buffer:
- Διαβάζοντας το πλήρες ποσό με buffer: Χρησιμοποιήστε το "io.ReadFull" με buffer για να διαβάσετε αποτελεσματικά ολόκληρο τον όγκο δεδομένων από έναν αναγνώστη.Αυτές οι προηγμένες λειτουργίες I/O στο Go παρέχουν μεγαλύτερη ευελιξία και έλεγχο στον τρόπο ανάγνωσης και εγγραφής των δεδομένων, καθιστώντας ευκολότερο τον αποτελεσματικό χειρισμό σύνθετων εργασιών I/O.
Αναφορές:[1] https://www.developer.com/languages/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