Maison > développement back-end > Golang > Comment puis-je garantir la présence sur le terrain dans Go Generics ?

Comment puis-je garantir la présence sur le terrain dans Go Generics ?

Susan Sarandon
Libérer: 2024-12-17 19:19:14
original
186 Les gens l'ont consulté

How Can I Guarantee Field Presence in Go Generics?

Assurer la présence des champs dans les fonctions génériques

Dans Go, créer des fonctions génériques qui acceptent des valeurs avec des champs spécifiques peut être un défi. En utilisant des génériques, nous pouvons tenter d'appliquer de telles contraintes, comme le démontre l'exemple ci-dessous :

package main

import (
    "fmt"
)

func Print[T IDer](s T) {
    fmt.Print(s.ID)
}

func main() {
    Print(Person{3, "Test"})
}

type IDer interface {
    ~struct{ ID int }
}

type Person struct {
    ID   int
    Name string
}

type Store struct {
    ID     int
    Domain string
}
Copier après la connexion

Cependant, cette approche échoue car l'implémentation générique de Go 1.18 ne prend pas en charge les types structurels. Par conséquent, nous ne pouvons pas utiliser ce mécanisme pour garantir la présence de champs spécifiques dans les valeurs transmises.

Par conséquent, dans Go, il est nécessaire de définir des méthodes au sein des interfaces pour accéder aux champs communs lorsqu'il s'agit d'unions ou de garantie de champs présence dans les fonctions génériques.

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal