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 পদ্ধতির চালু ভাষার অভিযোজনশীলতা এবং বড় ডেটাসেট প্রক্রিয়া করা বা স্ট্রিমিং ডেটা মোকাবেলার মতো আধুনিক কম্পিউটিং চ্যালেঞ্জগুলির প্রতি মনোনিবেশ উদ্ঘাটন করে।

যদিও Go ভাষায় ফাইলের সাথে কাজ করার জন্য বহিরাগত লাইব্রেরি পাওয়া যায়, স্ট্যান্ডার্ড লাইব্রেরির ক্ষমতা প্রায়শই যথেষ্ট এবং এর স্থিতিশীলতা এবং পারফরম্যান্সের জন্য পছন্দনীয়। এটি নিশ্চিত করে যে Go ডেভেলপাররা অতিরিক্ত নির্ভরতার ছাড়াই ফাইল অপারেশনগুলি কার্যকরভাবে প্রবন্ধন করতে পারে, ভাষার সাধারণ দর্শন এবং দক্ষ, বিশ্বস্ত সফটওয়্যার নির্মাণের জন্য ডিজাইনের সাথে সামঞ্জস্যপূর্ণ।