typestar

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

  1. El parámetro se declara en el tipo, no en cada método.
  2. Los métodos no pueden introducir parámetros de tipo propios.
  3. Un constructor mantiene legible la inferencia en el punto de llamada.

Palabras clave y builtins usados aquí

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.

Escribe este fragmento

Paso 3 de 4 en Genéricos; paso 15 de 19 en Interfaces y genéricos.

← Anterior Siguiente →