Go:
การอ่านไฟล์ข้อความ
วิธีการ:
การอ่านไฟล์ข้อความใน Go สามารถทำได้หลายวิธี แต่หนึ่งในวิธีที่ง่ายที่สุดคือการใช้แพคเกจ ioutil
นี่คือตัวอย่างพื้นฐาน:
package main
import (
"fmt"
"io/ioutil"
"log"
)
func main() {
content, err := ioutil.ReadFile("example.txt")
if err != nil {
log.Fatal(err)
}
fmt.Println(string(content))
}
หาก example.txt
มีเนื้อหาว่า “Hello, Go!” โปรแกรมนี้จะแสดงผลลัพธ์:
Hello, Go!
อย่างไรก็ตาม ณ Go 1.16 แพคเกจ ioutil
ได้ถูกปลดประเภท และแนะนำให้ใช้แพคเกจ os
และ io
แทน นี่คือวิธีที่คุณสามารถทำให้เหมือนกันกับแพคเกจเหล่านี้:
package main
import (
"bufio"
"fmt"
"log"
"os"
)
func main() {
file, err := os.Open("example.txt")
if err != nil {
log.Fatal(err)
}
defer file.Close()
scanner := bufio.NewScanner(file)
for scanner.Scan() {
fmt.Println(scanner.Text())
}
if err := scanner.Err(); err != nil {
log.Fatal(err)
}
}
วิธีนี้ไม่เพียงแต่ทันสมัยขึ้น แต่ยังรองรับไฟล์ขนาดใหญ่ เนื่องจากมันอ่านไฟล์ทีละบรรทัด แทนที่จะโหลดเนื้อหาทั้งหมดเข้าสู่หน่วยความจำในครั้งเดียว
การเจาะลึก:
การจัดการการดำเนินการไฟล์ของ Go รวมถึงการอ่านจากไฟล์ สะท้อนถึงปรัชญาของภาษาที่เน้นความง่ายและประสิทธิภาพ ในตอนแรก แพคเกจ ioutil
ได้เสนอการดำเนินการไฟล์ที่ตรงไปตรงมา อย่างไรก็ตาม ด้วยการปรับปรุงในไลบรารีมาตรฐานของ Go และการเปลี่ยนผ่านไปสู่การจัดการข้อผิดพลาดและการจัดการทรัพยากรที่ชัดเจนยิ่งขึ้น แพคเกจ os
และ io
จึงกลายเป็นทางเลือกที่พึงประสงค์มากขึ้นสำหรับการทำงานกับไฟล์
การเปลี่ยนแปลงเหล่านี้เน้นความมุ่งมั่นของ Go ต่อประสิทธิภาพและความปลอดภัยโดยเฉพาะอย่างยิ่งในการหลีกเลี่ยงปัญหาด้านหน่วยความจำที่อาจเกิดขึ้นจากการโหลดไฟล์ขนาดใหญ่โดยทั้งหมด วิธี bufio.Scanner
ที่เ introduced เพื่ออ่านไฟล์ทีละบรรทัด ภายใต้เส้นของภาษาที่ปรับตัวและโฟกัสต่อความท้าทายของการคอมพิวติ้งสมัยใหม่ เช่นการประมวลผลชุดข้อมูลขนาดใหญ่หรือการสตรีมข้อมูล
แม้จะมีไลบรารีภายนอกที่มีให้สำหรับการทำงานกับไฟล์ใน Go ความสามารถของไลบรารีมาตรฐานมักจะเพียงพอและเป็นที่ต้องการสำหรับความเสถียรและประสิทธิภาพ นี่ทำให้นักพัฒนา Go สามารถจัดการการดำเนินการไฟล์ได้อย่างมีประสิทธิภาพโดยไม่ต้องพึ่งพาการพึ่งพาเพิ่มเติม ตรงกับปรัชญาโดยรวมและการออกแบบที่เน้นความเรียบง่ายและการสร้างซอฟต์แวร์ที่มีประสิทธิภาพและเชื่อถือได้ของภาษา