Back to questions
Senior
4
Как сделать структуру данных generic (работающей с любым типом значений) в Go?
Companies where asked
Cloud.ru
Answer from 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 позволяют писать универсальные структуры и функции, параметризованные типами.