Maison  >  Article  >  développement back-end  >  Que sont les génériques à Golang ? Analyse détaillée

Que sont les génériques à Golang ? Analyse détaillée

WBOY
WBOYoriginal
2024-04-03 17:06:02917parcourir

Les génériques sont des fonctionnalités qui permettent aux définitions de fonctions et de types de fonctionner pour plusieurs types, améliorant ainsi la réutilisabilité et la maintenabilité. Les génériques dans Go utilisent des crochets pour représenter les paramètres de type et peuvent accepter divers types comparables. Ses cas d'utilisation incluent l'élimination du code en double, l'amélioration de la lisibilité, l'amélioration de la sécurité des types, etc. Un exemple pratique d'utilisation de génériques est la structure de données Stack, qui prend en charge plusieurs types d'opérations push et pop.

Que sont les génériques à Golang ? Analyse détaillée

Que sont les génériques à Golang ? Analyse détaillée

Présentation

Les génériques sont une fonctionnalité du langage de programmation qui permet la définition de fonctions, de méthodes et de types pouvant fonctionner pour plusieurs types. Cela améliore considérablement la réutilisabilité et la maintenabilité, éliminant le besoin de code de réification de type.

Génériques dans Go

Les génériques ont été introduits dans Go 1.18, apportant des fonctionnalités puissantes au langage. Les paramètres de type génériques sont représentés par des crochets, comme indiqué ci-dessous :

func Min[T comparable](a, b T) T {
    if a < b {
        return a
    }
    return b
}

Dans cet exemple, la fonction Min peut accepter n'importe quel type comparable, tel que int, float64 ou string. Min 函数可以接受任何可比较类型,例如 int、float64 或 string。

用例

泛型在 Go 中有许多用例,包括:

  • 消除重复代码:泛型函数和类型消除了复制粘贴相同但类型不同的代码块的需要。
  • 提高可读性:使用泛型可以创建更简洁易读的代码,因为不必明确指定类型。
  • 改善类型安全性:泛型强制编译器在编译时进行类型检查,从而减少了运行时错误的风险。

实战案例

让我们考虑一个使用泛型的实际示例。假设我们有一个 Stack

Cas d'utilisation

Les génériques ont de nombreux cas d'utilisation dans Go, notamment : 🎜
  • Éliminer le code en double : Les fonctions et types génériques éliminent les blocs de code copiés-collés qui sont identiques mais de différents types de besoins.
  • Amélioration de la lisibilité : l'utilisation de génériques crée un code plus propre et plus lisible, car les types n'ont pas besoin d'être spécifiés explicitement.
  • Sécurité des types améliorée : les génériques obligent le compilateur à effectuer une vérification de type au moment de la compilation, réduisant ainsi le risque d'erreurs d'exécution.
🎜Exemple pratique🎜🎜Considérons un exemple pratique d'utilisation de génériques. Supposons que nous ayons une structure de données Stack, qui est une collection premier entré, premier sorti (FIFO). Nous voulons pouvoir opérer sur différents types de valeurs : 🎜
package main

type Stack[T any] struct {
    elements []T
}

func (s *Stack[T]) Push(item T) {
    s.elements = append(s.elements, item)
}

func (s *Stack[T]) Pop() T {
    item := s.elements[len(s.elements)-1]
    s.elements = s.elements[:len(s.elements)-1]
    return item
}

func main() {
    intStack := Stack[int]{}
    intStack.Push(1)
    intStack.Push(2)
    fmt.Println(intStack.Pop())  // 2
    fmt.Println(intStack.Pop())  // 1

    stringStack := Stack[string]{}
    stringStack.Push("Hello")
    stringStack.Push("World")
    fmt.Println(stringStack.Pop())  // World
    fmt.Println(stringStack.Pop())  // Hello
}
🎜Cet exemple crée une structure de données Stack générique qui peut stocker tout type de valeur. Nous avons créé deux piles avec int et string comme types de valeur et effectué des opérations push et pop. 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn