Maison >développement back-end >Golang >Pourquoi les comparaisons de tableaux de pointeurs avec des structures vides produisent-elles des résultats incohérents ?
Pourquoi la comparaison de tableaux avec des structures vides donne des résultats différents
Étant donné un tableau de pointeurs vers des structures vides, pourquoi la comparaison d'égalité des tableaux parfois évalué à vrai et parfois à faux ?
Exploration de Comportement
package main import "fmt" type myStruct struct{} func main() { s, ss := myStruct{}, myStruct{} arr1 := [6]*myStruct{&s} arr2 := [6]*myStruct{&ss} fmt.Println(&s == &ss, arr1 == arr2) // Produces mixed results (e.g., false, true or true, false) l, ll := myStruct{A: 1}, myStruct{A: 1} arr3 := [6]*myStruct{&l} arr4 := [6]*myStruct{&ll} fmt.Println(&l == &ll, arr3 == arr4) // Always evaluates to false }
Explication
La spécification du langage Go indique que :
Analyse du comportement dynamique et de l'évasion
Le le comportement peut être expliqué en considérant l'analyse d'échappement effectuée par le compilateur Go.
Implications
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!