মূল কন্টেন্টে যান
মডিউল 2 · 3-এর পাঠ 5কোর্সে 8/50~10 min
মডিউল পাঠ (3/5)

জন্য...পরিসীমা

for ... range হল সংগ্রহের উপর পুনরাবৃত্তি করার বাহাদুরি উপায়: স্লাইস, অ্যারে, মানচিত্র, স্ট্রিং এবং চ্যানেল। সিনট্যাক্স সামান্য পরিবর্তন সংগ্রহের উপর নির্ভর করে, কিন্তু বেস প্যাটার্ন সবসময় একই: for key, value := range coll { ... }।

স্লাইস এবং অ্যারেতে পরিসীমা

সূচী এবং মূল্যের অনুলিপি প্রদান করে:

Go
nums := []int{10, 20, 30}
for i, v := range nums {
    fmt.Println(i, v)
}
// 0 10
// 1 20
// 2 30

প্রায়শই দুটির মধ্যে একটি যথেষ্ট:

Go
// solo indice
for i := range nums { _ = i }

// solo valore (ignora indice con _)
for _, v := range nums { _ = v }

একটি মানচিত্রে পরিসীমা

কী এবং মান প্রদান করে:

Go
prices := map[string]int{"pane": 2, "latte": 3, "vino": 8}
for k, v := range prices {
    fmt.Println(k, v)
}

একটি স্ট্রিং এর রেঞ্জ: রুনস, বাইট নয়

for i, r := range s পুনরাবৃত্তি করে প্রতি ইউনিকোড কোড পয়েন্ট (রুন), প্রতি নয় বাইট সূচক i হল রুনের শুরুর বাইট অফসেট।

Go
for i, r := range "èé" {
    fmt.Printf("%d %c (%U)\n", i, r, r)
}
// 0 è (U+00E8)
// 2 é (U+00E9)

প্রতি বাইট পুনরাবৃত্তি করতে ক্লাসিক ইনডেক্সিং ব্যবহার করুন:

Go
s := "ciao"
for i := 0; i < len(s); i++ {
    fmt.Println(s[i])  // byte (uint8)
}

একটি চ্যানেলে পরিসীমা

চ্যানেল বন্ধ না হওয়া পর্যন্ত পুনরাবৃত্তি হয়:

Go
ch := make(chan int)
go func() {
    for i := 0; i < 3; i++ { ch <- i }
    close(ch)
}()
for v := range ch {
    fmt.Println(v)
}

আমরা কনকারেন্সি মডিউলে আরও গভীরে খনন করব।

চেষ্টা করে দেখুন

ব্যায়াম#go.m2.l3.e1
প্রচেষ্টা: 0লোড হচ্ছে...

ফর-রেঞ্জ ব্যবহার করে সংখ্যার প্রতিটি উপাদানের সূচক এবং মান প্রিন্ট করুন।

সম্পাদক লোড হচ্ছে...

সমাধান 3 প্রচেষ্টার পরে উপলব্ধ

ব্যায়াম#go.m2.l3.e2
প্রচেষ্টা: 0লোড হচ্ছে...

সূচক উপেক্ষা করে সংখ্যার মোট সমস্ত মান যোগ করুন।

সম্পাদক লোড হচ্ছে...
ইঙ্গিত দেখান

সূচকটি বাতিল করতে `_` ব্যবহার করুন।

সমাধান 3 প্রচেষ্টার পরে উপলব্ধ

Quiz#go.m2.l3.e3
প্রস্তুত

m একটি মানচিত্র হলে `k, v := পরিসর m` এর প্রথম চলকটি কী উপস্থাপন করে?

Go
m := map[string]int{"a": 1, "b": 2}
for k, v := range m { fmt.Println(k, v) }
উত্তরের বিকল্প

রিক্যাপ

  • for k, v := range coll স্পষ্ট সুযোগ সহ: _ দিয়ে বাতিল করুন যা আপনি ব্যবহার করেন না৷
  • স্লাইস/অ্যারে: সূচক + মানের কপি। পরিবর্তন করতে, সূচক.
  • মানচিত্র: কী + মান, অর্ডার এলোমেলো প্রতি রানে।
  • স্ট্রিং: পরিসীমা প্রতি রুন (কোড পয়েন্ট) প্রতি পুনরাবৃত্তি করে, বাইট প্রতি নয়।
  • চ্যানেল: চ্যানেল খোলা থাকার সময় পুনরাবৃত্তি হয়; close() এর সাথে বন্ধ।