상식닷컴
로그인
가입하기
2026년 상식닷컴 선정 식당 & 카페 리스트
2025년 2026년 신상 호텔 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요
일주일 식단표 어플
자동 일주일 식단표 어플
안드로이드
아이폰
주식 & 코인 차트의 신
1000만원으로 2000만원 만들기 프로젝트
궁금한 상식 보기
UCLA의 연구 결과가 사회에 미치는 영향은 무엇인가요?
스탠퍼드 대학교의 연구 결과는 어떻게 상용화되나요?
신용점수는 몇 점 만점인가요?
정부지원대출의 대출금 상환 시 조기 상환 수수료가 있나요?
정부지원대출의 대출금 상환 방식 중 어떤 것이 가장 유리한가요?
정부지원대출의 신청 자격을 확인할 수 있는 방법은 무엇인가요?
정부지원대출의 대출금 사용 내역을 기록하기 위한 방법은 무엇인가요?
태풍의 강도와 피해 규모는 어떤 관계가 있나요?
태풍의 영향으로 인한 농업 피해는 어떤가요?
젤라토를 만드는 데 걸리는 시간은 얼마나 되나요?
넬슨에서의 해양 스포츠 대회는 어떤 것이 있나요?
에스프레소를 활용한 디저트는 어떤 것이 있나요?
Previous
Next
수정하기 - Go에서 defer 문은 어떤 용도로 사용하나요?
닉네임
비밀번호
제목
내용
[이미지 업로드는 권한이 있는 사람만 가능. 하단 카톡으로 연락]
Go 언어에서 `defer` 문은 주로 함수의 종료 시점에 특정 작업을 지연 실행하기 위해 사용됩니다. `defer`를 사용하면 함수가 종료될 때까지 실행을 미루고, 함수가 반환될 때 자동으로 실행되는 코드를 정의할 수 있습니다. 이는 주로 리소스 해제, 파일 닫기, 뮤텍스 잠금 해제 등과 같은 작업에 유용합니다. `defer`의 주요 특징 1. 지연 실행 : `defer`로 선언된 함수는 해당 함수가 종료될 때까지 실행되지 않습니다. 즉, `defer` 문이 호출된 위치에서 즉시 실행되지 않고, 함수의 마지막 부분에서 실행됩니다. 2. 스택 구조 : 여러 개의 `defer` 문이 있을 경우, LIFO(Last In, First Out) 방식으로 실행됩니다. 즉, 가장 나중에 선언된 `defer` 문이 가장 먼저 실행됩니다. 3. 에러 처리 : `defer`는 에러 처리와 함께 사용될 때 유용합니다. 예를 들어, 파일을 열고 작업을 수행한 후 파일을 닫는 작업을 `defer`를 통해 안전하게 처리할 수 있습니다. 이렇게 하면 함수가 중간에 에러가 발생하더라도 파일이 항상 닫히도록 보장할 수 있습니다. 사용 예시 다음은 `defer` 문을 사용한 간단한 예시입니다: ```go package main import ( "fmt" "os" ) func main() { // <a href='https://sangseek.com/sangseeks/파일 열기/ko'>파일 열기</a> file, err := os.Open("example.txt") if err != nil { fmt.Println("Error opening file:", err) return } // defer를 사용하여 파일을 닫기 defer file.Close() // 파일에서 작업 수행 // ... fmt.Println("File opened successfully") } ``` 위의 코드에서 `defer file.Close()`는 `main` 함수가 종료될 때 파일을 닫도록 예약합니다. 만약 파일을 여는 과정에서 에러가 발생하면, `defer` 문은 실행되지 않지만, 파일이 정상적으로 열렸다면 함수가 종료될 때 파일이 안전하게 닫힙니다. 성능 고려사항 `defer` 문은 코드의 가독성을 높이고 리소스 관리를 쉽게 해주지만, 성능 측면에서 약간의 오버헤드가 있을 수 있습니다. 특히, `defer` 문이 반복문 안에서 호출될 경우 성능 저하가 발생할 수 있으므로, 성능이 중요한 경우에는 주의해야 합니다. 이러한 경우에는 `defer` 대신 직접 리소스를 관리하는 방법을 고려할 수 있습니다. 결론 Go 언어에서 `defer` 문은 함수의 종료 시점에 특정 작업을 안전하게 수행할 수 있도록 도와주는 강력한 도구입니다. 리소스 관리, 에러 처리, 코드 가독성 향상 등 다양한 용도로 활용될 수 있으며, Go 프로그래밍에서 중요한 역할을 합니다. `defer`를 적절히 사용하면 코드의 안정성과 유지보수성을 높일 수 있습니다.
이용안내
커뮤니티 이용안내
×
- 게시한 게시글로 발생하는 문제는 게시자에게 책임이 있습니다.
- 게시글이 타인/타업체의 저작권을 침해할 경우 모든 책임은 게시자에게 있습니다. 게시자가 모든 손해를 부담해야 합니다.
- 상식닷컴 운영자는 게시자와 상의하지 않고 게시글을 수정 또는 삭제할 수 있습니다.
- 상식닷컴 운영자는 깨끗한 커뮤니티 공간을 만드는 것이 1순위입니다.
수정하기
취소하기