Maison > développement back-end > Golang > Comment les interfaces Go et les génériques Go 1.18 permettent-ils la programmation de fonctions génériques ?

Comment les interfaces Go et les génériques Go 1.18 permettent-ils la programmation de fonctions génériques ?

DDD
Libérer: 2024-12-28 18:00:23
original
273 Les gens l'ont consulté

How Do Go's Interfaces and Go 1.18 Generics Enable Generic Function Programming?

Fonctions génériques dans Go : dévoilement de l'interaction des interfaces et Go 1.18

Dans Go, la possibilité d'opérer sur des valeurs de différents types est un aspect crucial de la programmation. Cet article explore l'utilisation des interfaces, un concept de conception fondamental dans Go, pour réaliser cette fonctionnalité.

Utilisation des interfaces pour les fonctions génériques

Comme mentionné dans la documentation, vide les interfaces peuvent accepter des valeurs de n’importe quel type. Cela vient du fait qu’ils n’ont pas d’exigences méthodologiques spécifiques. Prenons l'exemple suivant :

func describe(i interface{}) {
    fmt.Printf("Type: %T | Value: %v\n", i, i)
}
Copier après la connexion

Cette fonction peut traiter des valeurs de différents types, comme démontré ci-dessous :

describe(5) // "Type: int | Value: 5"
describe("test") // "Type: string | Value: test"
Copier après la connexion

Cette approche fournit une forme rudimentaire de fonctionnalité générique, permettant à la même fonction pour gérer plusieurs types sans nécessiter d'implémentations spécifiques à un type.

Go 1.18 : une nouvelle ère pour les génériques Programmation

Cependant, avec l'introduction de Go 1.18, une manière plus explicite et plus puissante de définir des fonctions génériques est devenue disponible. Ceci est réalisé grâce à l'utilisation de paramètres de type et de génériques.

package main

import (
    "fmt"
)

// T can be any type
func Print[T any](s []T) {
    for _, v := range s {
        fmt.Print(v)
    }
}

func main() {
    // Passing list of string works
    Print([]string{"Hello, ", "world\n"})

    // You can pass a list of int to the same function as well
    Print([]int{1, 2})
}
Copier après la connexion

Sortie :

Hello, world
12
Copier après la connexion

Cette nouvelle syntaxe permet la définition de fonctions génériques pouvant fonctionner sur n'importe quel type, améliorant encore la flexibilité et la sécurité de type du code Go. Les fonctions génériques de Go 1.18 offrent une approche plus concise et robuste pour gérer plusieurs types, éliminant ainsi le besoin d'implémentations de fonctions spécifiques à un type.

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!

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