gometalinter / errcheck 및 반환된 변수가 있는 지연 함수
gometalinter 및 errcheck 도구는 변수를 반환하는 함수가 지연될 때 경고를 표시합니다. 이는 지연된 함수의 반환 값이 삭제되어 반환된 오류 변수가 확인되지 않기 때문에 발생합니다.
권장되는 접근 방식은 원래 함수를 호출하고 해당 반환 값을 처리하는 다른 함수를 연기하는 것입니다. 이 작업은 다음과 같이 익명 함수를 사용하여 수행할 수 있습니다.
<code class="go">defer func() { if err := r.Body.Close(); err != nil { fmt.Println("Error when closing:", err) } }()</code>
또는 오류 검사를 처리하는 도우미 함수를 생성할 수 있습니다.
<code class="go">func Check(f func() error) { if err := f(); err != nil { fmt.Println("Received error:", err) } }</code>
사용법:
<code class="go">defer Check(r.Body.Close)</code>
여러 개의 지연된 함수의 경우 여러 함수를 취하는 도우미 함수를 고려하세요.
<code class="go">func Checks(fs ...func() error) { for i := len(fs) - 1; i >= 0; i-- { if err := fs[i](); err != nil { fmt.Println("Received error:", err) } } }</code>
사용법:
<code class="go">defer Checks(r.Body.Close, SomeOtherFunc)</code>
Checks()의 하향 루프는 실행 순서를 모방합니다. 지연된 함수(후입선출).
위 내용은 Go에서 반환된 변수가 포함된 지연된 함수를 오류 없이 어떻게 처리할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!