মডিউল পাঠ (2/5)
শূন্য মান এবং টাইপ রূপান্তর
Go-তে একটি সুস্পষ্ট মান ছাড়াই ঘোষিত প্রতিটি ভেরিয়েবল একটি পায়
শূন্য মান: এর প্রকারের "নিরপেক্ষ মান"। এটা একটা বিশাল পার্থক্য
জাভাস্ক্রিপ্ট থেকে, যেখানে let x; উৎপন্ন করে undefined, অথবা C, যেখানে আপনি শেষ করেন
আবর্জনা মেমরি সঙ্গে আপ. না undefined, না UB: শুধু শূন্য।
শূন্য মান টেবিল
| বিভাগ | প্রকার | শূন্য মান |
|---|---|---|
| সংখ্যাসূচক | int, int64, float32, float64, uint, ... | 0 |
| বুলিয়ান | bool | false |
| স্ট্রিং | string | "" (খালি স্ট্রিং) |
| পয়েন্টার | *T | nil |
| স্লাইস / মানচিত্র / চ্যানেল | []T, map[K]V, chan T | nil |
| ফাংশন / ইন্টারফেস | func(...), interface{...} | nil |
| গঠন | T struct{...} | সমস্ত ক্ষেত্র তাদের শূন্য মান |
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)।
i := 42
var f float64 = float64(i)
var u uint = uint(i)int এবং int64 এর মতো "সামঞ্জস্যপূর্ণ" প্রকারের জন্যও এটি সত্য: একটি
স্পষ্ট রূপান্তর সবসময় প্রয়োজন হয়.
var a int = 10
var b int64 = int64(a) // obbligatorioসংখ্যার মধ্যে রূপান্তর: ছাঁটাইয়ের জন্য সতর্ক থাকুন
float64 থেকে int এ যাওয়া শূন্যের দিকে ছোট হয়, এটি হয় না
বৃত্তাকার:
f := 3.9
i := int(f) // 3, non 4
n := int(-3.9) // -3, non -4স্ট্রিং ↔ সংখ্যা রূপান্তর
string(65) দেয় না "65": এটি দেয় "A" (কোড সহ রুন
পয়েন্ট 65)। স্ট্রিং → সংখ্যা এবং এর বিপরীতে আপনার প্রয়োজন strconv
প্যাকেজ:
import "strconv"
s := strconv.Itoa(42) // "42"
n, err := strconv.Atoi("42") // 42, nilআমরা Stdlib মডিউলে এটিকে গভীরভাবে কভার করব।
তোমার পালা
int এর একটি পরিবর্তনশীল কাউন্টার শুরু না করে ঘোষণা করুন এবং এটি প্রিন্ট করুন। প্রত্যাশিত: 0
ইঙ্গিত দেখান
ইনিশিয়ালাইজার ছাড়া ভেরিয়েবলটি টাইপের শূন্য মান নেয়।
সমাধান 3 প্রচেষ্টার পরে উপলব্ধ
পূর্ণসংখ্যা n=10 দেওয়া, n কে float64 তে রূপান্তর করুন এবং 4 দ্বারা ভাগ করুন। ফলাফল প্রিন্ট করুন (প্রত্যাশিত 2.5)।
ইঙ্গিত দেখান
স্পষ্ট রূপান্তর ছাড়া, `n / 4` হল একটি পূর্ণসংখ্যা বিভাজন যা 2 দেয়।
সমাধান 3 প্রচেষ্টার পরে উপলব্ধ
এই কোড প্রিন্ট কি?
f := 3.7
fmt.Println(int(f))রিক্যাপ
- প্রতিটি প্রকারের একটি সামঞ্জস্যপূর্ণ শূন্য মান রয়েছে: না
undefined, কোনো UB নেই। - স্লাইস/ম্যাপ/চ্যান/ফাঙ্ক/ইন্টারফেস/পয়েন্টারের শূন্য মান আছে
nil। - সাংখ্যিক রূপান্তরগুলি সর্বদা
type(value)এর সাথে স্পষ্ট। int(float)শূন্যের দিকে কেটে যায়; রাউন্ড ইউজ করতেmath.Round- স্ট্রিং ↔ সংখ্যার জন্য
strconvপ্যাকেজটি ব্যবহার করুন (সরাসরি কাস্ট নয়)।