Go에서 잘못된 반환 값이 있는 지연된 함수 처리
gometalinter 및 errcheck는 변수를 반환하는 함수가 오류 없이 지연될 때 정당하게 경고를 발생시킵니다. 반환된 오류를 확인합니다. 이로 인해 처리되지 않은 오류와 잠재적인 런타임 문제가 발생할 수 있습니다.
이 시나리오를 처리하는 관용구는 함수 자체를 연기하는 것이 아니라 반환된 값을 확인하는 다른 함수로 래핑하는 것입니다. 예는 다음과 같습니다.
<code class="go">defer func() { if err := r.Body.Close(); err != nil { // Handle the error } }()</code>
익명 함수를 사용하면 지연된 함수의 반환 값을 캡처하고 발생하는 모든 오류를 처리할 수 있습니다.
또는 도우미 함수를 만들 수도 있습니다. 프로세스를 단순화하려면:
<code class="go">func Check(f func() error) { if err := f(); err != nil { // Handle the error } }</code>
이 도우미 함수를 사용하여 여러 함수를 연기하고 해당 반환 값을 확인할 수 있습니다.
<code class="go">defer Check(r.Body.Close) defer Check(SomeOtherFunc)</code>
도우미 함수를 확장할 수도 있습니다. 여러 기능을 허용하려면:
<code class="go">func Checks(fs ...func() error) { for i := len(fs) - 1; i >= 0; i-- { if err := fs[i](); err != nil { // Handle the error } } }</code>
이렇게 하면 여러 기능을 연기하고 해당 오류를 보다 간결하고 체계적인 방식으로 처리할 수 있습니다.
<code class="go">defer Checks(r.Body.Close, SomeOtherFunc)</code>
오류가 다음에서 처리되도록 합니다. 순서가 올바른 경우 Checks() 함수는 하향 루프를 사용하여 선언의 역순으로 함수를 실행합니다. 이는 마지막 지연된 함수가 먼저 실행되는 지연된 함수의 실행 순서와 일치합니다.
위 내용은 Go에서 지연된 함수의 잘못된 반환 값을 어떻게 처리할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!