Вопрос: Как работают методы у параметризованных типов (generic types)?
Go
Junior
Без компании
Вопрос: Как работают методы у параметризованных типов (generic types)?
Ответы
Можно объявлять методы на типах с параметрами типов, но receiver должен быть конкретным именем типа.
```go
package main
import "fmt"
type Stack[T any] struct {
items []T
}
func (s *Stack[T]) Push(v T) {
s.items = append(s.items, v)
}
func (s *Stack[T]) Pop() (T, bool) {
var zero T
if len(s.items) == 0 {
return zero, false
}
last := s.items[len(s.items)-1]
s.items = s.items[:len(s.items)-1]
return last, true
}
func main() {
var st Stack[int]
st.Push(1)
st.Push(2)
fmt.Println(st.Pop())
}
```