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

শূন্য মান এবং টাইপ রূপান্তর

Go-তে একটি সুস্পষ্ট মান ছাড়াই ঘোষিত প্রতিটি ভেরিয়েবল একটি পায় শূন্য মান: এর প্রকারের "নিরপেক্ষ মান"। এটা একটা বিশাল পার্থক্য জাভাস্ক্রিপ্ট থেকে, যেখানে let x; উৎপন্ন করে undefined, অথবা C, যেখানে আপনি শেষ করেন আবর্জনা মেমরি সঙ্গে আপ. না undefined, না UB: শুধু শূন্য।

শূন্য মান টেবিল

বিভাগপ্রকারশূন্য মান
সংখ্যাসূচকint, int64, float32, float64, uint, ...0
বুলিয়ানboolfalse
স্ট্রিংstring"" (খালি স্ট্রিং)
পয়েন্টার*Tnil
স্লাইস / মানচিত্র / চ্যানেল[]T, map[K]V, chan Tnil
ফাংশন / ইন্টারফেসfunc(...), interface{...}nil
গঠনT struct{...}সমস্ত ক্ষেত্র তাদের শূন্য মান
Go
var i int        // 0
var f float64    // 0
var s string     // ""
var b bool       // false
var p *int       // nil
var nums []int   // nil  (NB: una slice nil ha len 0 e si può iterare!)

রূপান্তরগুলি সর্বদা স্পষ্ট

C, Python বা JS এর বিপরীতে, Go **একটি স্বয়ংক্রিয়ভাবে প্রচার করে না অন্যের কাছে সাংখ্যিক প্রকার: আপনাকে লিখতে হবে type(value)।

Go
i := 42
var f float64 = float64(i)
var u uint = uint(i)

int এবং int64 এর মতো "সামঞ্জস্যপূর্ণ" প্রকারের জন্যও এটি সত্য: একটি স্পষ্ট রূপান্তর সবসময় প্রয়োজন হয়.

Go
var a int = 10
var b int64 = int64(a)  // obbligatorio

সংখ্যার মধ্যে রূপান্তর: ছাঁটাইয়ের জন্য সতর্ক থাকুন

float64 থেকে int এ যাওয়া শূন্যের দিকে ছোট হয়, এটি হয় না বৃত্তাকার:

Go
f := 3.9
i := int(f)   // 3, non 4
n := int(-3.9) // -3, non -4

স্ট্রিং ↔ সংখ্যা রূপান্তর

string(65) দেয় না "65": এটি দেয় "A" (কোড সহ রুন পয়েন্ট 65)। স্ট্রিং → সংখ্যা এবং এর বিপরীতে আপনার প্রয়োজন strconv প্যাকেজ:

Go
import "strconv"

s := strconv.Itoa(42)        // "42"
n, err := strconv.Atoi("42") // 42, nil

আমরা Stdlib মডিউলে এটিকে গভীরভাবে কভার করব।

তোমার পালা

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

int এর একটি পরিবর্তনশীল কাউন্টার শুরু না করে ঘোষণা করুন এবং এটি প্রিন্ট করুন। প্রত্যাশিত: 0

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

ইনিশিয়ালাইজার ছাড়া ভেরিয়েবলটি টাইপের শূন্য মান নেয়।

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

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

পূর্ণসংখ্যা n=10 দেওয়া, n কে float64 তে রূপান্তর করুন এবং 4 দ্বারা ভাগ করুন। ফলাফল প্রিন্ট করুন (প্রত্যাশিত 2.5)।

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

স্পষ্ট রূপান্তর ছাড়া, `n / 4` হল একটি পূর্ণসংখ্যা বিভাজন যা 2 দেয়।

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

Quiz#go.m1.l2.e3
প্রস্তুত

এই কোড প্রিন্ট কি?

Go
f := 3.7
fmt.Println(int(f))
উত্তরের বিকল্প

রিক্যাপ

  • প্রতিটি প্রকারের একটি সামঞ্জস্যপূর্ণ শূন্য মান রয়েছে: না undefined, কোনো UB নেই।
  • স্লাইস/ম্যাপ/চ্যান/ফাঙ্ক/ইন্টারফেস/পয়েন্টারের শূন্য মান আছে nil।
  • সাংখ্যিক রূপান্তরগুলি সর্বদা type(value) এর সাথে স্পষ্ট।
  • int(float) শূন্যের দিকে কেটে যায়; রাউন্ড ইউজ করতে math.Round
  • স্ট্রিং ↔ সংখ্যার জন্য strconv প্যাকেজটি ব্যবহার করুন (সরাসরি কাস্ট নয়)।