Dans Golang, nous devons parfois définir plusieurs types comme un seul type afin de traiter les données de manière plus flexible. Pour ce problème, l'éditeur PHP Xinyi apporte une solution à chacun. En utilisant des types d’interface, nous pouvons définir plusieurs types différents comme un seul type. Un type d'interface peut définir un ensemble de méthodes sans spécifier d'implémentation spécifique. De cette façon, nous pouvons implémenter cette interface pour plusieurs types, puis utiliser ce type d'interface pour des opérations et un traitement unifiés. Cette approche simplifie non seulement la structure du code, mais améliore également la lisibilité et la maintenabilité du code. Examinons ensuite les étapes spécifiques de mise en œuvre !
func GetFailedReasonAndErr (xxx) (string, error){ ... } func AnyFailed (args ...(string, error)) { for _, arg := range args { if arg.error != nil { return arg } } } func main () { reason, err := AnyFailed(GetFailedReasonAndErr(yyy), GetFailedReasonAndErr(zzz)) println(reason, err) }
Le code ci-dessus ne parvient pas à se compiler car "args ...(string, error)" n'est pas autorisé. Puis-je définir (String, Error) comme type ? Ou une meilleure façon ? (Puis-je utiliser des structures ?) comme : Tapez Reasonanderror(String, Error)
Puis-je définir (String, Error) comme type ?
Non, cette syntaxe n'est pas utilisée. go n'a pas de tuples.
(Pouvez-vous utiliser la structure ?) Par exemple : tapez Reasonanderror (string, error)
Oui, déclarez un type de structure et utilisez-le. La syntaxe pour déclarer un type de structure est la suivante :
type reasonanderror struct { reason string err error }
Ensuite, pour l'utiliser, vous procédez comme suit :
func GetFailedReasonAndErr(xxx) reasonAndError { // ... } func AnyFailed(args ...reasonAndError) (string, error) { for _, arg := range args { if arg.err != nil { return arg.reason, arg.err } } return "", nil } func main () { reason, err := AnyFailed(GetFailedReasonAndErr(yyy), GetFailedReasonAndErr(zzz)) println(reason, err) }
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!