"Invalid Recursive Type in a Struct in Go" 오류 이해
Go에서는 구조체 내에서 재귀 유형이 허용되지 않습니다. 이 오류는 자체 유형의 필드가 포함된 구조체를 정의하려고 할 때 발생합니다.
환경 구조체의 초기 정의를 고려하세요.
type Environment struct { parent Environment symbol string value RCFAEValue }
여기서 상위 필드는 동일합니다. 둘러싸는 구조체인 Environment를 입력합니다. 이 재귀 정의는 "잘못된 재귀 유형 환경" 오류로 이어집니다.
해결책: 재귀 유형에 포인터 사용
이 오류를 해결하려면 상위 필드를 환경 구조체에 대한 포인터:
type Environment struct { parent *Environment // pointer to the Environment struct symbol string value RCFAEValue }
포인터는 다른 값의 메모리 주소를 저장하는 값입니다. 상위 필드에 대한 포인터를 사용하여 재귀적 종속성을 제거하고 컴파일러가 환경 구조의 크기를 결정할 수 있도록 합니다.
환경 생성
생성하려면 환경인 경우 & 연산자를 사용하여 다른 환경 변수의 주소를 얻습니다.
env := Environment{ &fun_Val.ds, // using the address of fun_Val.ds fun_Val.param, exp.arg_exp.interp(existingEnv)}
이것은 상위 필드가 유효한 환경을 참조하는지 확인합니다. func_Val.ds를 *Environment 유형으로 직접 사용하여 발생하는 이전 오류를 방지합니다.
위 내용은 Go에서 '구조체의 잘못된 재귀 유형' 오류를 해결하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!