2016-11-16 7 views
-1

안녕하세요 저는 golang을 (를) 새롭게했습니다.지연에서 코드의 루프/조건/블록을 작성할 수 있습니까?

이렇게 결과 집합을 닫으려면 defer를 사용합니다.

defer res.Close() 

내가 res.Close()를 호출하기 전에 res is nil 여부를 확인하고 싶습니다.

아래 코드 블록이 함수의 끝에 있지만 일부 오류로 인해 종료 될 때 호출되지 않습니다.

if(res!=nil){ 
      res.Close() 
     } 

내가 알고 싶습니다 내가 defer를 사용하여이를 수있는 방법이있다.

defer if(res!=nil){ 
       res.Close() 
      } 

또한 이러한 상황을 처리하는 관용적 인 방법은 무엇입니까?

답변

5

당신은 defer에 함수 호출을 전달할 수 있습니다, 이것은 함수 리터럴 수 있습니다 : 당신은 일반적으로 오른쪽 자원 할당 후 defer 문을 작성하여이 문제를 방지

defer func() { 
    if res!=nil { 
      res.Close() 
    } 
}() 

참고.

+0

Denys Séguret 감사합니다. –