การดำเนินการ I/O ขั้นสูงใน Go รวมถึง:
1. บัฟเฟอร์ I/O พร้อมแพ็คเกจ `bufio`:
- Buffered Readers: ใช้ `bufio.NewReader` เพื่อสร้างตัวอ่านแบบบัฟเฟอร์ที่สามารถจัดการข้อมูลจำนวนมากได้อย่างมีประสิทธิภาพ- ตัวเขียนแบบบัฟเฟอร์: ใช้ `bufio.NewWriter` เพื่อสร้างตัวเขียนแบบบัฟเฟอร์ที่สามารถจัดการข้อมูลจำนวนมากได้อย่างมีประสิทธิภาพ
2. ผู้อ่านที:
- TeeReader: ใช้ `io.TeeReader` เพื่อแยกข้อมูลอินพุตออกเป็นสองสตรีม สิ่งนี้มีประโยชน์เมื่อคุณต้องการประมวลผลข้อมูลด้วยสองวิธีที่แตกต่างกัน3. ข้อมูลท่อ:
- ไปป์: ใช้ `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` กับบัฟเฟอร์:
- การเขียนสตริงด้วยบัฟเฟอร์: ใช้ `io.WriteString` พร้อมบัฟเฟอร์เพื่อเขียนสตริงถึงผู้เขียนอย่างมีประสิทธิภาพ12. การใช้ `io.MultiReader`:
- การอ่านจากหลายแหล่ง: ใช้ `io.MultiReader` เพื่ออ่านจากหลายแหล่ง13. การใช้ `io.MultiWriter`:
- การเขียนไปยังหลายปลายทาง: ใช้ `io.MultiWriter` เพื่อเขียนไปยังหลายปลายทาง14. ใช้ `io.PipeLine`:
- การสร้างไปป์ไลน์: ใช้ `io.PipeLine` เพื่อสร้างไปป์ไลน์ของผู้อ่านและนักเขียน15. การใช้ `io.ReadFull` กับบัฟเฟอร์:
- การอ่านจำนวนเต็มด้วยบัฟเฟอร์: ใช้ `io.ReadFull` พร้อมบัฟเฟอร์เพื่ออ่านข้อมูลทั้งหมดจากผู้อ่านได้อย่างมีประสิทธิภาพการดำเนินการ 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
-