为什么数组与空结构的比较会产生不同的结果
给定一个指向空结构的指针数组,为什么数组的相等比较会产生不同的结果有时评估为 true,有时评估为 true false?
行为探索
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 }
解释
Go 语言规范指出:
动态行为和逃逸分析
行为可以解释考虑Go编译器执行的转义分析。
含义
以上是为什么指针数组与空结构的比较会产生不一致的结果?的详细内容。更多信息请关注PHP中文网其他相关文章!