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 สามารถจัดการการดำเนินการไฟล์ได้อย่างมีประสิทธิภาพโดยไม่ต้องพึ่งพาการพึ่งพาเพิ่มเติม ตรงกับปรัชญาโดยรวมและการออกแบบที่เน้นความเรียบง่ายและการสร้างซอฟต์แวร์ที่มีประสิทธิภาพและเชื่อถือได้ของภาษา