Sobes.tech
Junior

როგორ განვახორციელოთ ნაკრები (set) 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
}