[Golang] Function 기초

2021-08-05 hit count image

Golang에서 Function(함수)를 선언하고 사용하는 방법에 대해서 알아봅시다.

golang

개요

이번 블로그 포스트에서는 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 함수와 Private 함수를 구별합니다.

  • 함수명이 대문자로 시작: 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 함수를 구별하기 위해, 함수명의 첫글자를 사용한다는 것에 대해서 알게되었습니다.

제 블로그가 도움이 되셨나요? 하단의 댓글을 달아주시면 저에게 큰 힘이 됩니다!

앱 홍보

책 홍보

블로그를 운영하면서 좋은 기회가 생겨 책을 출판하게 되었습니다.

아래 링크를 통해 제가 쓴 책을 구매하실 수 있습니다.
많은 분들에게 도움이 되면 좋겠네요.



SHARE
Twitter Facebook RSS