| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
| 29 | 30 | 31 |
Tags
- go
- Vue
- TODO
- channel
- graceful shutdown
- websocket
- emit
- Refactoring
- 행렬
- URL
- goroutines
- goroutine
- Server
- cli
- Dictionary
- container
- reactivity
- golang
- CDN
- toggle
- map
- App.vue
- localStorage
- SFC
- Matrix
- Vue.js
- component
- method
- PROPS
- todo-list
Archives
- Today
- Total
ksundev 님의 블로그
Go의 함수 본문
# 기본형

기본적으로는 이렇게 쓴다. 만약 a와 b가 같은 자료형을 쓴다면,

이렇게도 가능하다.
# ex.) Single -> Multi

그리고 Go는 TypeScript와 같이 엄격한 컴파일 시간 검사(Strict Compile-time Checking) 를 사용하고 있어서
사용하지 않는 변수와 잘못된 타입에 대해 컴파일타임에 오류를 발생시켜준다.
물론 이게 까다롭게 느껴져 불편할 때도 있지만, 생각하지 못한 부분의 실수를 막아준다는 점에서 개인적으로 마음에 들었다.
만약 upperName을 출력하고 싶지 않다면, 다음과 같이 해결할 수 있다.

# Unlimitted Argument
단어를 무제한으로 입력받아 출력하는 함수를 만들어보자.

# Naked return

반환 값에 미리 변수명을 입력한다면 go가 자동으로 무엇을 반환할지 인식한다.
return 뒤에 따로 명시하지 않아도 반환값이 지정된다.
# "defer"

defer는 함수가 끝난 뒤 자동으로 실행할 코드를 지정해줄 수 있게 해준다.
예를 들어, 함수 코드를 모두 실행한 뒤, API를 호출한다거나, 또 다른 함수를 호출할 수도 있다.
WOW. 정말 놀라운 기능이다.
주요 사용 사례
- 리소스 정리: 파일 닫기, 데이터베이스 연결 해제, 뮤텍스 언락 등
- 에러 처리 후 정리 작업
- 함수 종료 시 반드시 실행되어야 하는 코드
주의할 점
- API 호출 같은 비즈니스 로직보다는 정리 작업에 주로 사용
- defer된 함수는 LIFO 순서(나중에 defer한 것부터)로 실행
- 함수의 파라미터는 defer 시점에 평가됨
'[개발] Go > 기본문법' 카테고리의 다른 글
| If문과 Switch문 (4) | 2025.06.09 |
|---|---|
| Loop (반복문) (0) | 2025.06.01 |
| 변수와 상수 (0) | 2025.05.31 |
| packages 그리고 imports (priavate / public) (0) | 2025.05.31 |
| Go 설치 및 Hello World (Mac) (0) | 2025.05.29 |