ওলিয়েড ছাড়াও, শূন্য মানগুলির উপর অনুমানটি দেখুন :
যখন মেমোরি কোনও মূল্য সংরক্ষণের জন্য বরাদ্দ করা হয়, হয় কোনও ঘোষণা বা মেকের কল বা নতুন মাধ্যমে এবং কোনও স্পষ্ট সূচনা সরবরাহ করা হয় না, মেমরিটিকে ডিফল্ট সূচনা দেওয়া হয়। এই জাতীয় মানের প্রতিটি উপাদান তার প্রকারের জন্য শূন্য মানে সেট করা থাকে: বুলিয়ানদের জন্য মিথ্যা, পূর্ণসংখ্যার জন্য 0, ভাসমানের জন্য 0.0, স্ট্রিংয়ের জন্য ", এবং পয়েন্টার, ফাংশন, ইন্টারফেস, টুকরা, চ্যানেল এবং মানচিত্রের জন্য শূন্য"। এই সূচনাটি পুনরাবৃত্তভাবে করা হয়, সুতরাং উদাহরণস্বরূপ স্ট্রাক্টগুলির একটি অ্যারের প্রতিটি উপাদানটির ক্ষেত্র শূন্য হবে যদি কোনও মান নির্দিষ্ট না করা থাকে।
আপনি দেখতে পাচ্ছেন nil
যে প্রতিটি ধরণের শূন্য মান নয় কেবল পয়েন্টার, ফাংশন, ইন্টারফেস, টুকরা, চ্যানেল এবং মানচিত্রের জন্য। এ কারণেই config == nil
ত্রুটি এবং
&config == nil
না হওয়ার কারণ ।
কি না চেক করতে আপনার struct uninitialized আপনাকে তার নিজ নিজ শূন্য মান জন্য প্রতি সদস্য চেক করতে চাই (যেমন host == ""
, port == 0
ইত্যাদি) বা একটি ব্যক্তিগত ক্ষেত্র যা একটি অভ্যন্তরীণ আরম্ভের পদ্ধতি দ্বারা সেট করা হয় না। উদাহরণ:
type Config struct {
Host string
Port float64
setup bool
}
func NewConfig(host string, port float64) *Config {
return &Config{host, port, true}
}
func (c *Config) Initialized() bool { return c != nil && c.setup }