Types génériques
Contexte
Section intitulée « Contexte »Vous pouvez définir des structures, interfaces et alias génériques. Le paramètre de type apparaît après le nom du type entre crochets. Les types génériques peuvent avoir des méthodes, mais les méthodes ne peuvent pas avoir de paramètres de type supplémentaires (le paramètre du récepteur est fixe).
Définir une Pile[T] générique avec les méthodes Empiler et Depiler.
Code exemple
Section intitulée « Code exemple »package main
import "fmt"
type Pile[T any] struct { elements []T}
func (p *Pile[T]) Empiler(item T) { p.elements = append(p.elements, item)}
func (p *Pile[T]) Depiler() (T, bool) { if len(p.elements) == 0 { var zero T return zero, false } dernier := p.elements[len(p.elements)-1] p.elements = p.elements[:len(p.elements)-1] return dernier, true}
func main() { pileInt := Pile[int]{} pileInt.Empiler(10) pileInt.Empiler(20) fmt.Println(pileInt.Depiler()) // 20, true fmt.Println(pileInt.Depiler()) // 10, true fmt.Println(pileInt.Depiler()) // 0, false}20 true10 true0 false