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
Susan Sarandonoriginal
2024-12-17 19:19:14212parcourir

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
}

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!

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