사실 강의가 진행이 안된 이유는 이미지로 쓸 그림을 그려달라고 닥달을 해서 작품이 나올 때까지 기다리고 있었다.
1. 함수
오늘은 함수에 대해서 알아보도록 하겠습니다.
함수는 흔히 수학에서 들어보셨을 겁니다.
그 수학에서 배운 함수와 현재 우리가 배울 함수와 비슷합니다.
x 값을 넣으면 y의 값이 정해지는 것처럼 함수에 인자를 집어넣으면 함수는 결과 값을 되돌려줍니다.
1-1. 사용한다 나는 함수를
그렇다.
지금까지 Go로 작성한 프로그램에서는 하나의 함수만을 사용해왔습니다.
바로 그 함수는 메인 함수입니다.
아래는 함수 선언 방법입니다.
아, Go 언어에서는 함수를 선언할 때 위치 제약이 없습니다.
c, c++에서는 호출할 때 해당 함수의 선언이 앞에 있어야만 호출할 수 있었습니다.
다만 Go언어에서는 함수 선언이 어디에 있든 상관없이 함수를 호출할 수 있습니다.
아래는 입력 값을 받고 그 값들을 더한 값을 출력하는 예제입니다.
하지만 코드가 길어진다면 보기가 난해해질 수 있습니다.
이럴 때에 보기 좋게 함수를 사용합니다!
그러면 덧셈 함수를 만들어보도록 하겠습니다.
이 프로그램은 숫자를 입력 받고 두 수를 더한 값을 출력합니다.
함수는 func 키워드로 시작해 이어서 함수의 이름이 나온다.
함수의 인자는 이름 타임, 이름 타입, ... 같은 식으로 선언합니다.
그 뒤에는 리턴 값의 타입을 지정합니다.
1-2. 2개 이상의 값 반환
Go에서는 한 함수에서 여러 값을 반환할 수 있습니다.
여러 값을 반환해주려면 몇 가지를 변경해주어야합니다.
먼저 반환 형이 , 기준으로 여러 개의 값을 담도록 수정해야합니다.
1-3. 이 함수를 따돌릴겁니다. (지연)
Go에서는 특현한 defer 키워드가 있습니다.
이 키워드는 해당 함수를 끝으로 옮깁니다.
defer 키워드를 second 함수에 적용하였습니다.
그렇다면 이 코드의 작동은 아래의 코드와 같이 작동합니다.
처음의 코드를 실행한 결과는 당연히 아래와 같이 출력됩니다.
이 키워드는 자원을 해제해야 할 때 자주 사용합니다.
예를 들면 파일을 열고 저장을 하는 상황에 끝에서는 파일을 닫아줘야합니다.
이럴 때에 defer 키워드를 사용하여 편하게 사용할 수 있습니다.
이렇게 오랜만에 Go 강좌 함수에 대해 알아보았습니다.
사실 재귀, 함수 안의 함수 만들기도 작성할까 했지만...
하여튼 길고 긴 글을 읽어주셔서 감사합니다 ^^!
다음 강좌에서는 포인터를 다뤄보도록 하겠습니다.
'0x0a Programming > 0x0b Go Lang' 카테고리의 다른 글
Go 강좌 7편. 배열(Array), 슬라이스(Slice), 맵(Map) (33) | 2016.01.10 |
---|---|
Go 강좌 6편. 반복문(for, continue) (0) | 2016.01.06 |
Go 강좌 5편. 패키지(Package)와 조건문(if, else, switch) (1) | 2015.12.30 |
Go 강좌 4편. 연산자(Operators) (0) | 2015.12.25 |
Go 강좌 3편. 변수(Variable), 상수(Constant) (0) | 2015.12.08 |