মডিউল পাঠ (1/5)
স্থির-দৈর্ঘ্যের অ্যারে
গো-তে একটি অ্যারে এর একটি নির্দিষ্ট দৈর্ঘ্য রয়েছে, এটির প্রকারে বেক করা হয়েছে: [N]T।
এটি একটি আদিম যা খুব কমই সরাসরি অ্যাপ্লিকেশন কোডে ব্যবহৃত হয় — আপনি করবেন
প্রায় সবসময় স্লাইস (পরবর্তী পাঠ) নিয়ে কাজ করুন, যা গতিশীল
অ্যারের উপর ভিউ।
তবুও, অ্যারেগুলি ভালভাবে বোঝা অপরিহার্য: গো-তে সবকিছু তৈরি করা হয়েছে তাদের উপরে।
ঘোষণা এবং সূচনা
var a [3]int = [3]int{10, 20, 30}
b := [3]int{1, 2, 3} // inference with :=
c := [3]int{} // all zero: [0, 0, 0]
d := [...]int{1, 2, 3, 4} // length inferred = 4একটি অ্যারের শূন্য মান হল ঘোষিত দৈর্ঘ্যের একটি অ্যারে যার সাথে প্রতিটি উপাদান তার শূন্য মান:
var nums [5]int // [0 0 0 0 0]ইন্ডেক্সিং এবং len
a := [3]int{10, 20, 30}
fmt.Println(a[0]) // 10
a[1] = 99
fmt.Println(len(a)) // 3সীমার বাইরের অ্যাক্সেস রানটাইম প্যানিক সৃষ্টি করে (একটি নীরব অনির্ধারিত নয় যেমন সি)।
দৈর্ঘ্য টাইপের অংশ
var a [3]int
var b [4]int
// a = b // ERROR: different types[3]int এবং [4]int হল স্বতন্ত্র প্রকার, যদিও উভয়ই ধারণ করে
int। এই কারণেই অ্যারেগুলি খুব কমই ফাংশনে পাস করা হয়: আপনাকে এটি করতে হবে
প্যারামিটার টাইপের মধ্যে দৈর্ঘ্যকে হার্ড-কোড করুন।
মান দ্বারা অনুলিপি
স্লাইস (রেফারেন্স) এবং মানচিত্র (রেফারেন্স) থেকে ভিন্ন, অ্যারে ** দ্বারা অনুলিপি করা হয় মান**:
a := [3]int{1, 2, 3}
b := a // copy
b[0] = 99
fmt.Println(a[0]) // 1 — a is unchangedএকটি ফাংশনে পাস করার সময় একই প্রযোজ্য: ফাংশনটি তার গ্রহণ করে নিজস্ব অনুলিপি।
কখন অ্যারে ব্যবহার করবেন?
- কম্পাইলের সময় পরিচিত স্থির-আকারের বাফার (যেমন
[16]byteএকটি MD5 এর জন্য)। - যৌগিক মানচিত্র কী (স্লাইসগুলি "তুলনাযোগ্য" নয়, অ্যারেগুলি)।
- চরম কর্মক্ষমতা (কোনও পরোক্ষ, ক্যাশে-বান্ধব)
99% কোডের জন্য: স্লাইস ব্যবহার করুন।
চেষ্টা করে দেখুন
10, 20, 30 মান সহ একটি 3 ইন্টের অ্যারে হিসাবে ঘোষণা করুন এবং এর দৈর্ঘ্য প্রিন্ট করুন।
ইঙ্গিত দেখান
অ্যারে আক্ষরিক: `[3]int{a, b, c}`।
সমাধান 3 প্রচেষ্টার পরে উপলব্ধ
b কে 5 ints (সমস্ত শূন্য) এর অ্যারে হিসাবে ঘোষণা করুন এবং 2 অবস্থানে 99 নির্ধারণ করুন।
ইঙ্গিত দেখান
`var b [5]int` শুরু হয় [0 0 0 0 0] হিসেবে।
সমাধান 3 প্রচেষ্টার পরে উপলব্ধ
[3]int এবং [4]int কি একই প্রকার?
var a [3]int
var b [4]int
// a = b ?রিক্যাপ
[N]T: নির্দিষ্ট দৈর্ঘ্য, প্রকারের অংশ।- শূন্য মান: প্রতিটি উপাদান তার শূন্য মান।
[...]int{...}কম্পাইলারকে দৈর্ঘ্য অনুমান করতে দেয়।- মান দ্বারা অনুলিপি (ভিতরের ফাংশন সহ)।
- সীমার বাইরে = আতঙ্ক, অনির্ধারিত নয়।
- অনুশীলনে, স্লাইস ব্যবহার করুন, যা অ্যারেগুলির উপর দৃষ্টিভঙ্গি।