Maison > développement back-end > Golang > Comment utiliser des génériques pour résoudre des problèmes courants dans Golang ?

Comment utiliser des génériques pour résoudre des problèmes courants dans Golang ?

WBOY
Libérer: 2024-05-04 09:45:01
original
357 Les gens l'ont consulté

Les génériques dans Go peuvent résoudre les problèmes courants : Conversion de type : utilisez des fonctions génériques pour simplifier les conversions de différents types. Création de structures de données : utilisez des types génériques pour simplifier la création de structures de données communes. Passage de fonctions : l'utilisation de déclarations de fonctions génériques permet de transmettre des paramètres de différents types. Cas pratiques : démontrer l'application des génériques dans des problèmes pratiques à travers des exemples tels que la cartographie de la sécurité des types, améliorant ainsi la polyvalence, la flexibilité et la sécurité des types du code.

Comment utiliser des génériques pour résoudre des problèmes courants dans Golang ?

Comment utiliser les génériques pour résoudre les problèmes courants dans Go

Dans Go 1.18, les génériques ont été officiellement introduits, nous permettant d'écrire du code plus général et plus sûr sans compromettre les performances. Cet article explique comment utiliser les génériques pour résoudre les problèmes courants dans Go.

Conversion de type

Dans Go, la conversion de type nécessite souvent l'utilisation d'une conversion de type, qui est sujette aux erreurs et peu élégante. Les génériques nous permettent de créer des fonctions génériques pour gérer différents types de conversions, comme indiqué ci-dessous :

func Convert[T any](i T) T {
  // i 中的值将被转换为 T 类型
  return i
}

func main() {
  i := 5
  j := Convert(i) // j 是 int 类型
  fmt.Println(j) // 输出: 5
}
Copier après la connexion

Structures de données

La création de structures de données génériques nécessite d'écrire beaucoup de code passe-partout. Les génériques peuvent simplifier ce processus :

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

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

func main() {
  stack := Stack[int]{}
  stack.Push(5)
}
Copier après la connexion

Passage de fonctions

Les fonctions dans Go ne peuvent transmettre que des paramètres de types spécifiques, ce qui limite la flexibilité du code. Les génériques nous permettent de déclarer des fonctions comme génériques afin qu'elles puissent gérer des paramètres de différents types :

func Sort[T comparable](s []T) {
  sort.Slice(s, func(i, j int) bool {
    return s[i] < s[j]
  })
}

func main() {
  ints := []int{5, 2, 8, 1}
  Sort(ints) // ints 被排序为 [1, 2, 5, 8]
}
Copier après la connexion

Exemples pratiques

Voici des exemples d'utilisation de génériques pour résoudre des problèmes réels :

Mappage de type sécurisé

Créer un carte de type sécurisé pour stocker des paires clé-valeur de différents types :

type Map[K comparable, V any] map[K]V

func main() {
  m := Map[string, int]{
    "one": 1,
    "two": 2,
  }

  // 编译时检查类型安全性
  fmt.Println(m["one"]) // 1
  fmt.Println(m[1])    // 编译错误,类型不匹配
}
Copier après la connexion

En utilisant des génériques, nous pouvons écrire du code plus général et flexible dans Go tout en conservant la sécurité et les performances des types.

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal