var anonymousStruct = &struct { Value int Test func() }{ Test: func() { fmt.Println(anonymousStruct.Value) }, }
코드를 살펴보면 6행에서 문제가 발생했습니다. "Test" 함수는 매개변수 "Value"에 액세스할 수 없습니다. "anonymousStruct.Test(anonymousStruct.Value)"와 유사하게 매개변수로 다시 전달하지 않고 함수에 "Value"에 대한 액세스 권한을 부여하는 방법이 있습니까? 즉, Go의 익명 구조체가 함수 대신 메서드를 가질 수 있습니까? 귀하의 안내에 감사드립니다.
메서드 선언은 명명된 유형(수신자)만 포함할 수 있으므로 메소드를 익명 구조체로 선언할 수 없습니다.
이 외에도 익명 구조체는 메서드가 있는 유형을 포함하는 경우 메서드를 가질 수 있습니다(승격됩니다).
귀하의 예에서는 변수가 선언된 후(복합 리터럴 뒤)에만 범위에 있기 때문에 복합 리터럴에서 anonymousStruct
변수를 참조할 수 없습니다. 사양: 선언 및 범위 를 참조하세요. 예: 함수 내에서 재귀 함수 정의하기 .
예를 들어 변수 선언 후 함수 필드를 초기화할 수 있습니다.
으아악다음과 같이 출력됩니다(Go Playground에서 시도해 보세요):
으아악위 내용은 익명 구조체가 Go에서 메서드를 가질 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!