Go:
CSV এর সাথে কাজ করা

কিভাবে:

গো এ CSV ফাইলের সাথে কাজ করা এর মানক লাইব্রেরি, encoding/csv এর ধন্যবাদে সোজা। নীচে CSV ফাইল পড়া এবং লেখার উপর একটি ভূমিকা দেওয়া আছে।

একটি CSV ফাইল পড়া

CSV ফাইল থেকে পড়তে, প্রথমে আপনি os.Open ব্যবহার করে ফাইল খুলতে হবে, তারপর csv.NewReader দ্বারা নতুন CSV রিডার তৈরি করতে হবে।

package main

import (
    "encoding/csv"
    "fmt"
    "os"
)

func main() {
    file, err := os.Open("data.csv")
    if err != nil {
        panic(err)
    }
    defer file.Close()

    reader := csv.NewReader(file)
    records, err := reader.ReadAll()
    if err != nil {
        panic(err)
    }

    for _, record := range records {
        fmt.Println(record)
    }
}

এই কোড স্নিপেটটি data.csv থেকে সমস্ত রেকর্ড পড়বে এবং তা প্রিন্ট করবে। প্রতিটি রেকর্ড হল ফিল্ডের একটি স্লাইস।

একটি CSV ফাইলে লেখা

লিখতে, আপনি csv.NewWriter এবং একাধিক বা একক CSV রেকর্ড লিখতে writer.WriteAll অথবা writer.Write-এর ব্যবহার করেন।

package main

import (
    "encoding/csv"
    "os"
)

func main() {
    file, err := os.Create("output.csv")
    if err != nil {
        panic(err)
    }
    defer file.Close()

    writer := csv.NewWriter(file)
    defer writer.Flush()

    records := [][]string{
        {"Name", "Age", "City"},
        {"John Doe", "30", "New York"},
        {"Jane Doe", "27", "Los Angeles"},
    }

    if err := writer.WriteAll(records); err != nil {
        panic(err)
    }
}

এটি output.csv নামের একটি ফাইল তৈরি করবে যা প্রদান করা রেকর্ডগুলির সাথে থাকবে। সদা মনে রাখবেন লেখককে ফ্লাশ করা উচিত যাতে সমস্ত বাফারকৃত ডেটা ফাইলে লিখিত হয়।

গভীর ডুব

গোর encoding/csv প্যাকেজ প্রদান করে CSV ফাইল পড়া এবং লেখার জন্য দৃঢ় সমর্থন কিন্তু এটি সরলতা মনে রেখে ডিজাইন করা হয়েছে, যার মানে হল এটি বিভাজকগুলির স্বয়ংক্রিয়-সনাক্তকরণ, উদ্ধৃতি বা ক্ষেত্রগুলিতে এমবেডেড লাইন ব্রেকের মত জটিল পরিস্থিতি সামলাতে পারে না ব্যতীত ম্যানুয়াল পরিচালনা ছাড়া।

ঐতিহাসিকভাবে, এই জটিলতার কারণে প্রোগ্রামিং ভাষায় CSV হ্যান্ডলিং প্রায়ই বিরক্তিকর হয়েছে, কিন্তু গোর মানক লাইব্রেরি এই সমস্যাগুলির অনেকগুলি আবস্ট্রাক্ট করে, যা ডেভেলপারদের সাপেক্ষে সহজে CSV ডেটা নিয়ে কাজ করতে দেয়। তবে, আরও জটিল CSV ম্যানিপুলেশনের জন্য, তৃতীয়-পক্ষের লাইব্রেরি যেমন gocsv অথবা ম্যানুয়ালি পার্সিং ডিল করা প্রয়োজন হতে পারে।

গোর csv প্যাকেজের একটি উল্লেখযোগ্য দিক হল এর কাস্টম কমা (বিভাজক) নির্দিষ্ট করার সমর্থন, যা এটিকে CSV ফাইলের বৈকল্পিকগুলির সাথে, যেমন ট্যাব-বিচ্ছিন্ন মান (TSV) সাথে সহজে কাজ করতে দেয়। তবে, যখন অত্যন্ত অনিয়মিত বা অ-মানক CSV ফাইলের সাথে কাজ করা হয়, তখন গো প্রোগ্রামাররা নিজেদেরকে বিদ্যমান csv রিডার বা লেখক বাস্তবায়নগুলি প্রসারিত করতে দেখতে পারেন।

সাধারণ উদ্দেশ্যের জন্য গোর CSV হ্যান্ডলিং ক্ষমতা যথেষ্ট দৃঢ়, তবে ইনটেনসিভ ডেটা ম্যানিপুলেশন, যেমন ডাটা সায়েন্স বা জটিল ডেটা ট্রান্সফরমেশন টাস্কের জন্য প্রয়োজনে, প্রোগ্রামাররা ডেডিকেটেড ডেটা প্রসেসিং প্যাকেজগুলির দিকে বা এই কাজের জন্য আরও উপযুক্ত অন্যান্য ভাষা যেমন পাইথন এর pandas লাইব্রেরির দিকে তাকাতে পারেন। তবে, সরল CSV পড়া-লেখা অপারেশনের জন্য, গোর মানক লাইব্রেরি এর দক্ষতা এবং সরলতার জন্য বিশেষ উল্লেখযোগ্য।