Senior
29
Go-да барлық типтегі мәндермен жұмыс істейтін жалпы деректер құрылымын қалай жасауға болады?
Сұралған компаниялар
Cloud.ru
AI-дан жауап
sobes.tech AI
В Go с версии 1.18 появились обобщения (generics), которые позволяют создавать структуры данных, работающие с любыми типами.
Для создания generic-структуры нужно определить тип с параметром типа, например:
type Stack[T any] struct {
elements []T
}
func (s *Stack[T]) Push(element T) {
s.elements = append(s.elements, element)
}
func (s *Stack[T]) Pop() (T, bool) {
if len(s.elements) == 0 {
var zero T
return zero, false
}
index := len(s.elements) - 1
elem := s.elements[index]
s.elements = s.elements[:index]
return elem, true
}
Здесь T — параметр типа, any — ограничение, означающее любой тип. Такая структура Stack может работать с любыми типами данных, например Stack[int] или Stack[string].
Таким образом, generics в Go позволяют писать универсальные структуры и функции, параметризованные типами.