사실 강의가 진행이 안된 이유는 이미지로 쓸 그림을 그려달라고 닥달을 해서 작품이 나올 때까지 기다리고 있었다.



1. 함수

오늘은 함수에 대해서 알아보도록 하겠습니다.

함수는 흔히 수학에서 들어보셨을 겁니다.

그 수학에서 배운 함수와 현재 우리가 배울 함수와 비슷합니다.

x 값을 넣으면 y의 값이 정해지는 것처럼 함수에 인자를 집어넣으면 함수는 결과 값을 되돌려줍니다. 




1-1. 사용한다 나는 함수를

그렇다.


지금까지 Go로 작성한 프로그램에서는 하나의 함수만을 사용해왔습니다.


바로 그 함수는 메인 함수입니다.


아래는 함수 선언 방법입니다.




아, Go 언어에서는 함수를 선언할 때 위치 제약이 없습니다.

c, c++에서는 호출할 때 해당 함수의 선언이 앞에 있어야만 호출할 수 있었습니다.

다만 Go언어에서는 함수 선언이 어디에 있든 상관없이 함수를 호출할 수 있습니다. 


아래는 입력 값을 받고 그 값들을 더한 값을 출력하는 예제입니다.

하지만 코드가 길어진다면 보기가 난해해질 수 있습니다.

이럴 때에 보기 좋게 함수를 사용합니다!



그러면 덧셈 함수를 만들어보도록 하겠습니다.



이 프로그램은 숫자를 입력 받고 두 수를 더한 값을 출력합니다.


함수는 func 키워드로 시작해 이어서 함수의 이름이 나온다.

함수의 인자는 이름 타임, 이름 타입, ... 같은 식으로 선언합니다.

그 뒤에는 리턴 값의 타입을 지정합니다.



1-2. 2개 이상의 값 반환

Go에서는 한 함수에서 여러 값을 반환할 수 있습니다.


여러 값을 반환해주려면 몇 가지를 변경해주어야합니다.

먼저 반환 형이 , 기준으로 여러 개의 값을 담도록 수정해야합니다.






1-3. 이 함수를 따돌릴겁니다. (지연)

Go에서는 특현한 defer 키워드가 있습니다.

이 키워드는 해당 함수를 끝으로 옮깁니다.



defer 키워드를 second 함수에 적용하였습니다.


그렇다면 이 코드의 작동은 아래의 코드와 같이 작동합니다.



처음의 코드를 실행한 결과는 당연히 아래와 같이 출력됩니다.




이 키워드는 자원을 해제해야 할 때 자주 사용합니다.

예를 들면 파일을 열고 저장을 하는 상황에 끝에서는 파일을 닫아줘야합니다.


이럴 때에 defer 키워드를 사용하여 편하게 사용할 수 있습니다.

 


이렇게 오랜만에 Go 강좌 함수에 대해 알아보았습니다.

사실 재귀, 함수 안의 함수 만들기도 작성할까 했지만...


하여튼 길고 긴 글을 읽어주셔서 감사합니다 ^^!


다음 강좌에서는 포인터를 다뤄보도록 하겠습니다.

+ Recent posts