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

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

WBOY
WBOYavant
2024-02-10 19:06:09666parcourir

不能使用 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

}

J'obtiens cette erreur de compilation :

<code>
Cannot use 'iterable' (type Iterable[int]) as the type struct {...}
</code>

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer