Go-তে Arrays এবং তাদের বিভিন্ন অপারেশন
Go প্রোগ্রামিং ভাষায়, Arrays হল এক ধরনের ডেটা স্ট্রাকচার, যা একই ধরনের একাধিক ডেটাকে সংরক্ষণ করে। একটি Array-র আকার (size) নির্দিষ্ট থাকে এবং একবার সেট করা হলে এটি পরিবর্তন করা যায় না। Go-তে Arrays এর সাথে বিভিন্ন অপারেশন করা হয় যেমন ইনডেক্সিং, স্লাইসিং, লেন্থ চেকিং ইত্যাদি। এখানে আমরা Arrays এবং তাদের সাথে সম্পর্কিত বিভিন্ন অপারেশন নিয়ে আলোচনা করব।
১. Array ডিফাইনেশন
Go তে, Array ডিফাইন করার জন্য আপনাকে তার সাইজ এবং টাইপ উল্লেখ করতে হয়। একবার Array তৈরি হলে, তার সাইজ অপরিবর্তনীয় হয়ে থাকে।
var arr [5]int // একটি সাইজ 5 এর integer Array ডিফাইন করাএখানে, arr একটি int টাইপের Array, যার সাইজ ৫। Go তে arr এর প্রতিটি ইনডেক্স 0 থেকে শুরু হয়।
২. Array ইনিশিয়ালাইজেশন
Array তৈরির সময় আপনি তার মানও ইনিশিয়ালাইজ করতে পারেন:
package main
import "fmt"
func main() {
// Array ইনিশিয়ালাইজ করা
arr := [5]int{1, 2, 3, 4, 5}
fmt.Println(arr)
}এখানে, arr এর প্রথম পাঁচটি মান যথাক্রমে 1, 2, 3, 4, 5 দেওয়া হয়েছে। আউটপুট হবে:
[1 2 3 4 5]২.১ Array এর সাইজ না জানলেও ইনিশিয়ালাইজেশন
Go তে আপনি Array-র সাইজ না জানলেও ইনিশিয়ালাইজ করতে পারেন এবং Go স্বয়ংক্রিয়ভাবে সাইজ নির্ধারণ করে:
arr := [...]int{10, 20, 30, 40, 50}
fmt.Println(arr)এখানে, [...] দিয়ে Go নিজেই Array এর সাইজ নির্ধারণ করেছে। আউটপুট হবে:
[10 20 30 40 50]৩. Array-র বিভিন্ন অপারেশন
৩.১ Array এর ইনডেক্সিং
Array তে যে কোনো মান অ্যাক্সেস করার জন্য আপনি ইনডেক্স ব্যবহার করতে পারেন। Go তে Array এর ইনডেক্স ০ থেকে শুরু হয়।
package main
import "fmt"
func main() {
arr := [5]int{1, 2, 3, 4, 5}
// ইনডেক্স দিয়ে Array মান অ্যাক্সেস
fmt.Println(arr[0]) // আউটপুট: 1
fmt.Println(arr[2]) // আউটপুট: 3
}৩.২ Array এর লেন্থ (Length)
Go তে Array-এর সাইজ বা লেন্থ বের করতে len() ফাংশন ব্যবহার করা হয়।
package main
import "fmt"
func main() {
arr := [5]int{1, 2, 3, 4, 5}
fmt.Println(len(arr)) // আউটপুট: 5
}৩.৩ Array-র মান পরিবর্তন করা
Array তে মান পরিবর্তন করতে আপনি সোজা ইনডেক্স ব্যবহার করতে পারেন।
package main
import "fmt"
func main() {
arr := [5]int{1, 2, 3, 4, 5}
// ইনডেক্স ব্যবহার করে মান পরিবর্তন
arr[2] = 10
fmt.Println(arr) // আউটপুট: [1 2 10 4 5]
}এখানে, আমরা arr[2] মানটি পরিবর্তন করেছি এবং এটি 10 করেছি।
৪. Array এবং Slices (স্লাইসেস)
Go তে Slices হল একটি Array এর অংশ, যা ডাইনামিক সাইজ এবং সহজ ম্যানিপুলেশন সুবিধা দেয়। একটি Slice, Array-র একটি উপসেট হিসেবে কাজ করে, এবং এটি Array-র উপাদানগুলিকে পরিবর্তন এবং এক্সটেন্ড করতে পারে।
৪.১ Slice তৈরি করা
package main
import "fmt"
func main() {
arr := [5]int{1, 2, 3, 4, 5}
// Slice তৈরি করা
slice := arr[1:4] // এটি arr এর ইনডেক্স 1 থেকে 3 পর্যন্ত উপাদান নিবে
fmt.Println(slice) // আউটপুট: [2 3 4]
}এখানে arr[1:4] দিয়ে আমরা Array এর কিছু উপাদান Slice-এ নিয়ে এসেছি, যা 2, 3, 4।
৪.২ Slice এর লেন্থ এবং ক্যাপাসিটি
Slice-এ len() এবং cap() ফাংশন ব্যবহার করা যায় যা Slice এর লেন্থ এবং ক্যাপাসিটি (অর্থাৎ Slice-এর যে পরিমাণ স্থান ব্যবহার করা যায়) নির্ধারণ করে।
package main
import "fmt"
func main() {
arr := [5]int{1, 2, 3, 4, 5}
slice := arr[1:4]
fmt.Println(len(slice)) // আউটপুট: 3
fmt.Println(cap(slice)) // আউটপুট: 4
}এখানে, len(slice) ৩ দেখাবে কারণ Slice তে তিনটি উপাদান রয়েছে এবং cap(slice) ৪ কারণ এটি পুরো Array এর চারটি উপাদান ধারণ করতে সক্ষম।
৪.৩ Slice ম্যানিপুলেশন
Slice তৈরি এবং সংশোধন করা সহজ। আপনি Slice-এ নতুন উপাদান যোগ করতে পারেন, যেমন:
package main
import "fmt"
func main() {
slice := []int{10, 20, 30}
slice = append(slice, 40) // Slice এ নতুন উপাদান যোগ করা
fmt.Println(slice) // আউটপুট: [10 20 30 40]
}এখানে, append() ফাংশন ব্যবহার করে Slice-এ একটি নতুন মান যোগ করা হয়েছে।
৫. Array এবং Slice এর মধ্যে পার্থক্য
- Array: Fixed সাইজের, একবার ডিফাইন করার পরে সাইজ পরিবর্তন করা যায় না।
- Slice: Dynamic সাইজের, যে কোনো সময় গতি অনুসারে নতুন উপাদান যোগ করা বা বাদ দেওয়া সম্ভব।
সারসংক্ষেপ
- Array: Fixed সাইজের ডেটা স্ট্রাকচার যা একই ধরনের ডেটাকে একত্রিত করে রাখে।
- Array Operations: Array এর মধ্যে ইনডেক্সিং, মান পরিবর্তন, লেন্থ পাওয়া ইত্যাদি অপারেশন করা যায়।
- Slice: Array এর অংশ বা উপসেট যা ডাইনামিক সাইজ এবং ম্যানিপুলেশন সুবিধা দেয়। Slice ব্যবহার করলে Array এর উপাদানগুলো সহজে পরিবর্তন ও এক্সটেন্ড করা যায়।
- Slice Operations: Slice তৈরি, এর লেন্থ এবং ক্যাপাসিটি জানা, নতুন উপাদান যোগ করা এবং ম্যানিপুলেট করা।
Go-তে Array এবং Slice ব্যবহার করে আপনি ডেটাকে আরও কার্যকরীভাবে ম্যানেজ করতে পারবেন, যা ডেটা ম্যানিপুলেশনের ক্ষেত্রে সুবিধাজনক।
Read more