Sobes.tech
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
}