func
키워드를 사용하여 정의한다.
함수 파라미터는 0개 이상 사용할 수 있는데, 각 파라미터는 파라미터명 뒤에 int
, string
등 파라미터 타입을 정의한다.
함수의 반환 타입은 파라미터 괄호 뒤에 적는다.
함수는 패키지 안에 정의되며 호출되는 함수가 호출하는 함수의 반드시 앞에 위치해야 할 필요는 없다.
|
|
Pass By Reference
Go에서 파라미터를 전달하는 방식은 크게 Pass By Value와 Pass By Reference로 나뉜다.
Pass By Value
함수를 사용할 때 변수를 그대로 사용하면 함수 인자로 사용된 변수들의 값이 복사되어 함수에게 전달된다.
따라서 함수 인자로 받은 값을 함수 내부에서 변경해도 실제 변수값은 영향을 전혀 받지 않는다.
Pass By Reference
변수 앞에 &
를 붙이면 주소를 표시한다. 흔히 포인터라 부르며, 포인터를 사용하면 함수에서 해당 변수를 사용할 때 복사본이 아닌 실제 메모리에 접근하여 변수를 지정하므로 함수 내에서 변경이 인자에 넘겨진 주소를 가진 변수의 실제 값이 변경된다.
|
|
함수에서 파라미터를 선언할 때 *string
처럼 포인터임을 표시하면 해당 파라미터가 문자열이 아닌 문자열을 저장하고있는 메모리의 주소를 갖는다.
함수 내에서 포인터 파라미터의 주소에 저장된 데이터를 변경하려면 *변수명 = 값
형태로 변수 이름에 역참조 심볼인 *
을 붙여 접근하고 변경할 수 있다.
가변인자함수
함수에 여러개ㅢ 파라미터를 전달하려면 가변 파라미터를 나타내는 ...
을 타입 앞에 붙여 사용한다.
가변 파라미터를 갖는 함수를 호출할 때 n개 동일 타입 파라미터를 전달할 수 있다.
|
|
함수 반환값
기본형
함수에서 반환값이 있는 경우 func
문 마지막에 리턴 타입을 정의한다. 그리고 return
키워드를 사용해야 한다.
|
|
복수 개 반환값
go 언어에서 함수는 반환값이 여러개일 수 있다.
여러개 값을 반환하기 위해서는 해당 반환 타입들을 괄호 안에 적어준다.
|
|
Named Return Parameter
Named Return Parameter라는 기능을 제공하는데, 이는 반환되는 값들을 미리 선언하며, 값들이 여러 개 일때, 코드 가독성을 높힌다.
|
|
마지막에 빈 return
이 있지만 named return parameter로 정의된 형태로 반환된다. return
은 반환값에 아무런 영향을 주지 않지만 생략하면 에러가 발생한다.