함수 정의

func Add(a int, b int) int {
	return a + b
}

func 키워드를 사용해서 함수 정의를 알리고 그 뒤에 함수명이 온다. 첫글자가 대문자인 함수는 패키지 외부로 공개되는 함수이다. 그 다음으로 소괄호 안에 매개변수를 넣는다. 필요하지 않으면 비워둔다. 그리고 반환타임이 온다. 반환하는 값이 없으면 비워둔다. 그리고 중괄호로 함수 코드 블록을 표시한다.

멀티 반환 함수

함수는 값을 여러 개 반환할 수 있다. 반환값이 여럿일 때는 반환 타입들을 소괄호로 묶어서 표현한다.

package main

import "fmt"

func Divide(a, b int) (int, bool) {
	if b == 0 {
		return 0, false
	}
	return a / b, true
}

func main() {
	c, success := Divide(9, 3)
	fmt.Println(c, success)
	d, success := Divide(9, 0)
	fmt.Println(d, success)
}

OUTPUT : 
3 true
0 false

재귀 호출

재귀 호출(recursive call)이란 함수 안에서 자기 자신 함수를 다시 호출하는 것을 말한다.

package main

import "fmt"

func printNo(n int) {
	if n == 0 {
		return
	}
	fmt.Println(n)
	printNo(n-1)
	fmt.Println("After", n)
}

func main() {
	printNo(3)
}

OUTPUT : 
3
2
1
After 1
After 2
After 3