지연된 함수 인수 평가
질문: The Tour of Go의 인용문에 따르면 "지연된 호출의 인수는 즉시 평가됩니다." 이것이 의미하는 바는 무엇이며 실제로 평가되는 내용은 무엇입니까?
답변:
Go에서 defer 문은 바깥쪽 함수가 반환될 때까지 함수 실행을 지연시킵니다. 그러나 지연된 함수의 인수 평가는 즉시 발생합니다.
평가 프로세스 분석:
사양에는 각 "defer" 문에 대해 다음과 같이 명시되어 있습니다.
실제 함수 호출은 주변 함수가 반환될 때까지 실행되지 않습니다.
예:
다음을 고려하세요. 코드:
func def(s string) func() { fmt.Println("tier up") fmt.Println(s) return func() { fmt.Println("clean up") } } func main() { defer def("defered line")() fmt.Println("main") }
평가 순서:
결론:
defer 문을 사용하면 지연된 함수의 매개 변수가 즉시 평가됩니다. 이 프로세스를 통해 함수는 실행 시 변수의 최신 값에 액세스할 수 있습니다. 그러나 지연된 함수의 실제 실행은 주변 함수가 반환될 때까지 지연됩니다.
위 내용은 Go에서 지연된 함수 인수는 어떻게 되나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!