반환 값이 있는 함수를 연기할 때 오류 처리
golang/errcheck linter는 오류를 확인하지 않고 값을 반환하는 함수를 연기할 때 경고합니다. . 이 문제를 해결하려면 반환 값을 저장해야 하며, 이를 위해서는 원래 값을 호출하는 다른 함수를 연기해야 합니다.
한 가지 접근 방식은 아래 설명된 것처럼 익명 함수를 사용하는 것입니다.
<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>
추가로 Checks() 함수는 하향 루프를 활용하여 지연된 함수의 선입후행 실행 순서를 반영합니다.
위 내용은 Go에서 반환 값이 있는 함수를 연기할 때 오류를 처리하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!