-
Golang - 함수프로그래밍/Golang 2019. 8. 6. 19:52
- 함수 장점
함수는 문장들을 하나의 집합으로 묶어 재사용한다.
함수를 통해 복잡한 작업을 분할할 수 있고 분리된 환경에서 여러명이 동시에 작성할 수 있다.
함수는 세부 구현 내용을 추상화한다.
- 이해를 위한 함수 예제
함수 선언, 재귀, 익명 함수, 오류 처리, Go의 고유한 함수 기능들을 살펴보자.
- 함수 선언 예제
함수 선언에는 키워드, 이름, 파라미터 목록, 결과 목록, 본문으로 구성되어 있다.
func 이름(파라미터 목록) (결과 목록) { 본문 }
func은 함수라는 의미를 나타내기 위한 키워드이다.
이름은 함수의 이름이다.
파라미터 목록은 파라미터 이름과 타입의 쌍으로 구성된다. 파라미터의 기본값을 설정할 수 없으며 선언한 순서대로 인자로 제공해야 한다. 인자는 함수를 호출할 때 사용하는 목록이다. 인자는 값이며 파라미터 목록은 인자 값의 복사본을 받는다. 인자가 포인터, 슬라이스, 맵, 함수, 채널 등의 참조형인 경우에는 간접적으로 참조 값 변경에 영향을 미친다.
결과 목록은 함수가 반환하는 값의 타입을 지정한다. 결과 목록은 1개의 이름없는 결과를 반환할 수 있으며 보통 결과를 반환하지 않을 경우 괄호를 사용할 필요가 없고 생략한다. 결과 목록을 생략하면 아무 값도 반환하지 않는다.
func, 파라미터 목록, 결과 목록을 함수의 시그니처(signature)라고 한다. 만약 2개의 함수가 func, 파라미터 목록, 결과 목록이 같으면 함수 타입 또는 시그니처가 같다고 표현한다.
func f(x, y int) int { return x + y} --1) func f(x int, y int) (z int) { z = x -y; return } --2)
위의 1)과 2) 파라미터 목록은 같으며 간략하게 1)처럼 한 번만 쓸 수 있다.
1)의 본문에서 return은 x +y 결과를 결과 목록의 int형으로 반환한다.
2)의 본문에서 return은 z 값을 int형으로 반환한다.
- 재귀 예제