Junior
Ինչպե՞ս կարելի է իրականացնել բազմություն (set) in Go?
sobes.tech AI
Պատասխան AI-ից
Go լեզվում չկա ներքին տվյալների տեսակ "հավաք"։ Կարող է իրականացվել map-ի միջոցով։
// տողերի հավաքի իրականացում
type Set map[string]struct{}
// տարր ավելացնել
func (s Set) Add(item string) {
s[item] = struct{}{} // օգտագործում ենք struct{}, որպեսզի ավելորդ հիշողություն չզբաղեցնի
}
// տարր հեռացնել
func (s Set) Remove(item string) {
delete(s, item)
}
// ստուգել, արդյոք տարր կա
func (s Set) Contains(item string) bool {
_, ok := s[item]
return ok
}
// բոլոր տարրերը ստանալ (չի կարգավորված)
func (s Set) ToSlice() []string {
slice := make([]string, 0, len(s))
for item := range s {
slice = append(slice, item)
}
return slice
}