অস্থির না:
mu := new(sync.Mutex)
mu.Lock()
প্রসারণ:
var mu sync.Mutex
mu.Lock()
যদি আপনি একটি স্ট্রাকচারের পয়েন্টার ব্যবহার করেন, তবে মিউটেক্সটি স্ট্রাকচারের একটি নন-পয়েন্টার ফীল্ড হতে হবে। যদি স্ট্রাকচারটি না এক্সপোর্ট করা হয়, তবে স্ট্রাকচারে মিউটেক্স প্রত্যাগ সরাসরি এমবেড করা না।
অস্থির না:
type SMap struct {
sync.Mutex
data map[string]string
}
func NewSMap() *SMap {
return &SMap{
data: make(map[string]string),
}
}
func (m *SMap) Get(k string) string {
m.Lock()
defer m.Unlock()
return m.data[k]
}
// মিউটেক্স ফিল্ড, লক, এবং আনলক মেথডগুলি SMap এক্সপোর্ট করা API এর একটি অংশ হলে পূর্বনির্ধারিত ঘোষণা ছাড়া।
প্রসারণ:
type SMap struct {
mu sync.Mutex
data map[string]string
}
func NewSMap() *SMap {
return &SMap{
data: make(map[string]string),
}
}
func (m *SMap) Get(k string) string {
m.mu.Lock()
defer m.mu.Unlock()
return m.data[k]
}
// মিউটেক্স এবং তার মেথডগুলি SMap এর অঙ্গিকृত বিবরণ এবং তার কলারদের দৃশ্যমান না।