>  기사  >  백엔드 개발  >  Go에서 반환된 변수가 포함된 지연된 함수를 오류 없이 어떻게 처리할 수 있나요?

Go에서 반환된 변수가 포함된 지연된 함수를 오류 없이 어떻게 처리할 수 있나요?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-04 08:22:01801검색

How Can I Handle Deferred Functions with Returned Variables in Go without Errors?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.