본문 바로가기
카테고리 없음

[golang] - 함수 선언과 함수의 기본적인 특징

by CHML 2016. 2. 22.

  C/C++, Java 등의 언어처럼 Go 언어에서도 함수 선언 및 호출이 가능하다. 그러나 Go 언어에서는 C/C++, Java 처럼 매개변수의 존재 유무로 함수와 변수를 구별하는 것이 아니라, func 키워드를 이용하여 함수 선언을 나타낸다. 또한, 함수의 리턴 타입은 매개변수 뒤에 명시한다. 따라서, Go 언어에서는 'func' '함수명' '(매개변수)' '리턴 타입'의 형태로 함수를 선언한다. 아래의 소스 코드는 add라는 함수를 정의하여 main에서 호출하는 예제이다.


  

  함수의 리턴 타입을 매개 변수 뒤에 명시하는 이유는 http://blog.golang.org/gos-declaration-syntax에 설명되어 있다. 해당 문서의 내용을 요약하자면 ,코드를 왼쪽에서 오른쪽으로 읽을 때 매개 변수 다음에 리턴 타입이 나오는 것이 더욱 자연스럽기 때문이라고 한다. 이외에도 Go 언어의 함수가 갖고 있는 다양한 특징이 있으며, 아래에 자세히 설명한다.


1. Multiple results

Go 언어에서는 아래와 같이 하나의 함수가 여러개의 변수 및 값을 리턴할 수 있다.



2. Named results

함수의 리턴 값에 이름을 명시하여 함수 내부에서 변수처럼 이용할 수 있다. 또한, 함수 내부에 return 키워드만 이용하면 자동으로 이름이 명시된 리턴 값을 반환한다.



  Go 언어에서는 이외에도 가변인자를 이용하여 가변적으로 매개 변수의 수를 조정하거나 함수를 변수에 저장할 수 있다. 또한, Javascript 처럼 함수 내부에서 이름이 없는 익명 함수를 정의하여 바로 호출할 수도 있다.