빈 구조체를 사용한 배열 비교가 다른 결과를 나타내는 이유
빈 구조체에 대한 포인터 배열이 주어지면 배열의 동등 비교가 수행되는 이유 때로는 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!