Tipos genéricos en Go
Un struct puede tomar un parámetro de tipo, y sus métodos lo reutilizan.
type Stack[T any] struct {
items []T
}
func NewStack[T any]() *Stack[T] {
return &Stack[T]{}
}
func (s *Stack[T]) Push(item T) {
s.items = append(s.items, item)
}
func (s *Stack[T]) Pop() (T, bool) {
var zero T
if len(s.items) == 0 {
return zero, false
}
last := len(s.items) - 1
item := s.items[last]
s.items = s.items[:last]
return item, true
}
func (s *Stack[T]) Len() int { return len(s.items) }
Cómo funciona
- El parámetro se declara en el tipo, no en cada método.
- Los métodos no pueden introducir parámetros de tipo propios.
- Un constructor mantiene legible la inferencia en el punto de llamada.
Palabras clave y builtins usados aquí
anyappendboolfuncifintlenreturnstructtypevar
El intento, en números
- Líneas
- 24
- Caracteres a escribir
- 403
- Tokens
- 156
- Ritmo de tres estrellas
- 110 tpm
Al ritmo de tres estrellas de 110 tokens por minuto, este intento toma unos 85 segundos.
Paso 3 de 4 en Genéricos; paso 15 de 19 en Interfaces y genéricos.