Go-তে Type Conversion এবং Type Inference
১. Type Conversion (টাইপ কনভার্সন)
Go প্রোগ্রামিং ভাষায় টাইপ কনভার্সন হলো এক ধরনের ডেটা টাইপ থেকে অন্য টাইপে পরিবর্তন। এটি তখন প্রয়োজন হয় যখন আপনি একটি টাইপের মান অন্য টাইপে ব্যবহার করতে চান, তবে Go ভাষা টাইপ সুরক্ষা বজায় রাখতে কঠোর নিয়ম অনুসরণ করে। তাই টাইপ কনভার্সন করতে হলে explicit (স্পষ্টভাবে) কনভার্সন করতে হয়।
১.১ টাইপ কনভার্সন সিনট্যাক্স
টাইপ কনভার্সন করতে, আপনি একটি নির্দিষ্ট টাইপের নামের আগে মানটি রেখেও কনভার্ট করতে পারেন। এর সিনট্যাক্স হলো:
newValue := typeName(originalValue)১.২ টাইপ কনভার্সন উদাহরণ
ধরা যাক, আপনার কাছে একটি float64 টাইপের মান আছে এবং আপনি সেটিকে int টাইপে কনভার্ট করতে চান:
package main
import "fmt"
func main() {
var x float64 = 3.14
var y int = int(x) // float64 থেকে int এ কনভার্সন
fmt.Println("float64 value:", x)
fmt.Println("int value:", y)
}এখানে x হল float64 টাইপ এবং আমরা এটিকে int টাইপে কনভার্ট করেছি। আউটপুট হবে:
float64 value: 3.14
int value: 3এতে দেখা যাচ্ছে যে, দশমিক অংশটি বাদ দিয়ে শুধু পূর্ণসংখ্যাটি রাখা হয়েছে।
১.৩ স্ট্রিং থেকে অন্য টাইপে কনভার্সন
Go-তে স্ট্রিং কনভার্সনও করা যায়, যেমন স্ট্রিং থেকে সংখ্যা বা ভিন্ন ডেটা টাইপে রূপান্তর:
package main
import (
"fmt"
"strconv"
)
func main() {
str := "123"
num, err := strconv.Atoi(str) // স্ট্রিং থেকে ইন্টে কনভার্ট করা
if err != nil {
fmt.Println("Error:", err)
} else {
fmt.Println("Converted value:", num)
}
}এখানে strconv.Atoi ফাংশনটি স্ট্রিং "123" কে int টাইপে কনভার্ট করছে।
২. Type Inference (টাইপ ইনফারেন্স)
টাইপ ইনফারেন্স হলো যখন Go ডেভেলপারকে টাইপ নির্দিষ্ট করার প্রয়োজন পড়ে না, কারণ Go স্বয়ংক্রিয়ভাবে মান দেখে টাইপটি অনুমান (inference) করে। Go তে একটি ভেরিয়েবল ঘোষণার সময়, যখন টাইপ স্পষ্টভাবে উল্লেখ না করা হয়, তখন Go ভাষা সঠিক টাইপ নির্ধারণ করে।
Go ভাষায় ভেরিয়েবল ডিক্লারেশনে := ব্যবহার করার মাধ্যমে টাইপ ইনফারেন্স কার্যকর হয়, অর্থাৎ আপনি টাইপ উল্লেখ না করলেও Go তা স্বয়ংক্রিয়ভাবে নির্ধারণ করবে।
২.১ টাইপ ইনফারেন্স উদাহরণ
package main
import "fmt"
func main() {
x := 42 // এখানে টাইপ ইনফারেন্স দ্বারা Go x-এর টাইপ int নির্ধারণ করেছে
y := 3.14 // এখানে টাইপ ইনফারেন্স দ্বারা Go y-এর টাইপ float64 নির্ধারণ করেছে
fmt.Println(x, y)
}এখানে, আমরা x এবং y ভেরিয়েবল দুটি ডিক্লেয়ার করেছি, তবে টাইপ উল্লেখ করি নি। Go ভাষা x-কে int এবং y-কে float64 টাইপ হিসাবে ইনফারেন্স করেছে।
২.২ টাইপ ইনফারেন্সের সুবিধা
টাইপ ইনফারেন্সের ফলে কোড কমপ্লেক্সিটি কমে যায় এবং কোড লেখা সহজ হয়। এই সুবিধাটি প্রোগ্রামিং দ্রুততর করে, কারণ টাইপ উল্লেখ করার প্রয়োজন হয় না।
২.৩ টাইপ স্পষ্টীকরণ
যদি আপনি টাইপ স্পষ্টভাবে উল্লেখ করতে চান, তবে var কিওয়ার্ড ব্যবহার করে টাইপ নির্দিষ্ট করা যেতে পারে:
package main
import "fmt"
func main() {
var x int = 42 // টাইপ স্পষ্টভাবে উল্লেখ করা হয়েছে
var y float64 = 3.14
fmt.Println(x, y)
}এখানে, x এবং y টাইপ স্পষ্টভাবে int এবং float64 উল্লেখ করা হয়েছে, তবে := ব্যবহার করলে Go সেগুলি ইনফারেন্স করে নিবে।
সারসংক্ষেপ
- Type Conversion (টাইপ কনভার্সন): Go-তে টাইপ কনভার্সন করতে হলে এক টাইপ থেকে অন্য টাইপে পরিবর্তন করতে হয়, যা explicit কনভার্সন দিয়ে করা হয়। যেমন,
float64থেকেintকনভার্ট করা। - Type Inference (টাইপ ইনফারেন্স): Go তে ভেরিয়েবল ডিক্লেয়ার করার সময় যদি টাইপ স্পষ্টভাবে উল্লেখ না করা হয়, তবে Go নিজেই টাইপ নির্ধারণ করে। এটি কোডকে আরও সহজ ও পরিষ্কার করে তোলে।
Go তে টাইপ কনভার্সন এবং টাইপ ইনফারেন্সের সুবিধা কোড লেখার সময় আরও দ্রুত এবং কার্যকরী সিদ্ধান্ত নিতে সাহায্য করে।
Read more