Notice
Recent Posts
Recent Comments
Link
Connecting
Go 언어 함수 사용하기 본문
반응형
함수
함수(function)란 어떠한 입력을 통해서 어떠한 출력 매개변수로 맵핑하는 독립적인 코드 영역입니다.
Go 언어에서는 main 함수가 기본이지만 필요에 따라서 여러 함수 선언을 통해서 다양한 역할을 담당하는 함수를 선언하여 사용할 수 있습니다. 이렇게 기능별 함수를 선언하면 해당 역할을 담당하는 함수를 재사용 할 수 있으며, 코드를 간결하게 작성할 수 있습니다. 다음 예제는 함수를 사용한 기본 예제입니다.
package main
import f "fmt"
func hello() {
f.println("Hello")
}
func main() {
hello()
world()
}
func world() {
f.println("world!")
}
일부 언어의 경우 함수를 선언하기 위해서는 정의한 함수를 main 보다 위에 써주거나 함수가 존재한다는 정의를 해줘야 하지만 Go 언어는 함수를 정의할 때 위치 제약이 없습니다. 하지만 다음과 같이 코드를 작성하는 경우 에러가 발생합니다.
func hello() // 컴파일 에러가 발생함, 함수 선언의 위치는 상관이 없으나 {}의 위치는 반드시 지켜야함
{
f.println("Hello")
}
Go 언어에서 함수를 선언하고 매개변수를 넘기거나 결과값을 리턴받을 때는 다음과 같이 작성합니다.
func sum(a int, b int) int { // int형 변수 2개를 입력받고, int형 변수 하나를 반환할 때
return a + b
}
func subtract(a int, b int) (r int) { // 리턴할 값을 지정할 때
r = a - b
return r
}
Go 언어에서는 리턴값을 여러개 지정할 수 있습니다. 이를 사용하고자 할때는 다음과 같이 사용합니다.
func division(a int, b int) (int, int) { // 리턴값을 여러개 지정할 수 있음
value := a / b
remainder := a % b
return value, remainder
}
만약에 인자의 갯수의 상관없이 함수를 호출하고 싶다면 가변함수를 사용하면 됩니다. 가변함수를 통해 인자값을 넘기는 경우에는 ... 을 사용합니다. 다음 예제를 통해 살펴보도록 하겠습니다.
func multiplication(n ...int) int {
calculation := 2
for _, value := range n {
calculation *= value
}
return calculation
}
지금까지 Go 언어에서의 함수의 특징을 살펴보았습니다. 다음 예제를 통해 함수 사용법을 정리합니다.
package main
import f "fmt"
func main() {
a := 10
b := 20
result := sum(a, b)
f.Println(result)
f.Println(subtract(30, 20))
f.Println(division(4, 3))
_, remainder := division(456, 25)
f.Println("나머지 : ", remainder)
}
func sum(a int, b int) int {
return a + b
}
func subtract(a int, b int) (r int) {
r = a - b
return r
}
func division(a int, b int) (int, int) {
value := a / b
remainder := a % b
return value, remainder
}
package main
import f "fmt"
func main() {
f.Println("가변 함수")
result := multiplication(2, 3, 4, 5)
f.Println(result)
slice := []int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
f.Println(sliceSum(slice...))
r := func(a int, b int) int {
return a + b
}(1, 3)
f.Println(r)
}
func multiplication(n ...int) int {
calculation := 2
for _, value := range n {
calculation *= value
}
return calculation
}
func sliceSum(n ...int) int {
result := 0
for _, value := range n {
result += value
}
return result
}
'Go 언어' 카테고리의 다른 글
Go 언어 구조체 / 메서드 / 인터페이스 (0) | 2020.07.23 |
---|---|
Go 언어 클로저 / 재귀 / 지연호출 (0) | 2020.07.14 |
Go 언어 배열 / 슬라이스 / 맵 (0) | 2020.07.12 |
Go 언어 조건문 / 분기문 / 반복문 사용하기 (2) | 2020.07.12 |
Go 언어에서 변수 설정하기 (0) | 2020.07.07 |
Comments