개요
이번 블로그 포스트에서는 Golang에서 함수를 선언하고 사용하는 방법에 대해서 알아봅시다. 이 블로그 포스트에서 소개하는 코드는 다음 링크를 통해 확인하실 수 있습니다.
함수 정의
Golang에서 함수를 정의하고 사용하는 방법에 대해서 알아봅시다. 함수를 정의하고 사용하는 방법에 대해서 알아보기 위해, main.go
파일을 생성하고 다음과 같이 수정합니다.
package main
import "fmt"
func Add(a int, b int) int {
return a + b
}
func main() {
c := Add(1, 2)
fmt.Println(c)
}
함수는 다음과 같이 함수 정의 키워드인 func
을 사용하여 정의합니다.
// func 함수명(매개변수...) 반환 타입 {
// 코드블록
// }
func Add(a int, b int) int {
return a + b
}
만약, 매개 변수에서 같은 타입이 연속된다면, 다음과 같이 타입을 생략할 수 있습니다.
func Add(a, b int) int {
return a + b
}
Public과 Private
Golang에서는 Public
과 Private
이라는 키워드는 존재하지 않지만, 대소문자로 Public
함수와 Pirvate
함수를 구별합니다.
- 함수명이 대문자로 시작:
Public
함수 - 함수명이 소문자로 시작:
Private
함수
Public
함수는 다른 패키지에서 해당 함수를 사용하는 것이 가능하며, Private
함수는 해당 패키지내에서만 사용이 가능합니다.
멀티 반환 함수
Golang에서는 다음과 같이 함수가 다수의 값을 반환할 수 있습니다.
func Divide(a, b int) (int, bool) {
if b == 0 {
return 0, false
}
return a / b, true
}
func main() {
c, success := Divide(10, 2)
fmt.Println(c, success)
d, success := Divide(10, 0)
fmt.Println(d, success)
}
Golang에서는 다음과 같이 선언 대입문(:=
)을 사용하여 변수를 선언할 때, 이미 변수명이 선언이 되어있다면, 컴파일 에러가 발생합니다.
func main() {
c, success := Divide(10, 2)
c, success := Divide(10, 0) // ERROR!
fmt.Println(c, success)
}
선언 대입문(:=
)은 변수를 새로 정의하고 할당한다는 의미이기에 중복된 이름으로 새 변수를 생성할 수 없기 때문입니다. 하지만, 멀티 반환 함수에서 반환받는 값을 저장하는 변수명이 하나만 달라도 컴파일 에러가 발생하지 않습니다.
func main() {
c, success := Divide(10, 2)
fmt.Println(c, success)
d, success := Divide(10, 0)
fmt.Println(d, success)
}
출력값에 이름 지정
멀티 반환 함수에서 다음과 같이 반환되는 값의 변수를 미리 선언하고 사용할 수 있습니다.
func Divide(a, b int) (result int, success bool) {
if b == 0 {
result = 0
success = false
return
}
result = a / b
success = true
return
}
함수 심화
이밖에도 함수의 다양한 기능들이 있습니다. 좀 더 깊게 함수에 대해 공부하고 싶은 분들은 아래에 블로그를 참고하시기 바랍니다.
완료
이것으로 Golang에서 함수를 정의하고 사용하는 방법에 대해서 알아보았습니다. 또한 Golang에서 Public
과 Private
함수를 구별하기 위해, 함수명의 첫글자를 사용한다는 것에 대해서 알게되었습니다.
제 블로그가 도움이 되셨나요? 하단의 댓글을 달아주시면 저에게 큰 힘이 됩니다!
앱 홍보
Deku
가 개발한 앱을 한번 사용해보세요.Deku
가 개발한 앱은 Flutter로 개발되었습니다.관심있으신 분들은 앱을 다운로드하여 사용해 주시면 정말 감사하겠습니다.