[Golang] 함수

2021-10-04 hit count image

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에서는 PublicPrivate이라는 키워드는 존재하지 않지만, 대소문자로 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에서 PublicPrivate 함수를 구별하기 위해, 함수명의 첫글자를 사용한다는 것에 대해서 알게되었습니다.

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

책 홍보

스무디 한 잔 마시며 끝내는 React Native 책을 출판한지 벌써 2년이 다되었네요.
이번에도 좋은 기회가 있어서 스무디 한 잔 마시며 끝내는 리액트 + TDD 책을 출판하게 되었습니다.

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

스무디 한 잔 마시며 끝내는 React Native, 비제이퍼블릭
스무디 한 잔 마시며 끝내는 리액트 + TDD, 비제이퍼블릭
Posts