Maison > développement back-end > Golang > Impossible d'utiliser struct comme type struct {...}

Impossible d'utiliser struct comme type struct {...}

WBOY
Libérer: 2024-02-10 19:06:09
avant
712 Les gens l'ont consulté

不能使用 struct 作为类型 struct {...}

l'éditeur php Xiaoxin introduira une remarque importante dans cet article : en PHP, vous ne pouvez pas utiliser "struct" comme type. Cela est dû aux limitations du langage PHP lui-même, qui ne prend pas en charge les définitions de type « struct » similaires à celles du langage C. En PHP, nous pouvons utiliser des classes pour définir des structures de données personnalisées, ainsi que des propriétés et méthodes associées. En utilisant des classes, nous pouvons exploiter les données de manière plus flexible et plus puissante, et implémenter une logique et des fonctions plus complexes. Par conséquent, lorsque vous écrivez du code PHP, n'oubliez pas d'éviter d'utiliser "struct" comme définition de type et d'utiliser plutôt des classes. Cela permet de mieux respecter les caractéristiques et spécifications du langage PHP, rendant le code plus lisible, compréhensible et maintenable.

Contenu de la question

J'ai ce code :

type Iterable[T any] struct {
    Val  T
    End  T
    Next func() (bool, T)
}

func acceptStructWithNext[T any](r struct{ Next func() (bool, T) }) {
    fmt.Println(r)
}

func main() {

    iterable := Iterable[int]{
        Val: 0,
        End: 100,
        Next: func() (bool, int) {
            return true, 0
        },
    }

    acceptStructWithNext[int](iterable) // error is here

}
Copier après la connexion

J'obtiens cette erreur de compilation :

<code>
Cannot use 'iterable' (type Iterable[int]) as the type struct {...}
</code>
Copier après la connexion

Je pensais que les types de structures devraient autoriser ce genre de chose - où ai-je fait une erreur ?

Solution de contournement

Oui, mais Go n'a pas de « types structurels ». Dans une certaine mesure, les avantages des types structurels sont obtenus grâce aux règles de satisfaction implicites des interfaces. Mais cela ne fonctionne que sur la interface.

Veuillez vous référer à https://www.php.cn/link/2a2f98d3597419498e4d734d8c2dd106

Supposons que Go aura des types de structure de type manuel.

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:stackoverflow.com
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