프로그래밍

👨‍💻 [Go] Go 에서 함수란 무엇이며, 어떻게 활용할 수 있나요?

밝음의기둥 2025. 1. 9. 13:38
반응형

"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."


👨‍💻 안녕하세요, 윌리 프로젝트의 윌리 입니다.

Go 에서 함수란 무엇이며, 어떻게 활용할 수 있는지 간략히 알아보았습니다.


질문 >

Go 에서 함수란 무엇이며, 어떻게 활용할 수 있나요?

답변 >

Go에서 함수란?

함수는 특정 작업을 수행하거나 값을 반환하는 코드 블록입니다. Go에서 함수는 재사용 가능한 코드의 단위로, 프로그램을 모듈화하고 효율적으로 관리할 수 있게 합니다.

Go의 함수는 선언, 호출, 매개변수 처리, 반환 값 관리가 명확하고 간단하게 설계되어 있으며, 고급 기능으로 익명 함수, 고차 함수, 가변 매개변수, defer 등이 있습니다.


함수 선언과 호출

기본 형태

func 함수이름(매개변수) 반환타입 {
    // 함수 본문
    return 값
}

예제

package main

import "fmt"

// 함수 선언
func add(a int, b int) int {
    return a + b
}

func main() {
    // 함수 호출
    result := add(3, 5)
    fmt.Println("Result:", result)
}


함수 활용 방법

1. 매개변수와 반환값

Go에서는 매개변수와 반환값의 타입을 명시적으로 선언해야 합니다.

예제: 매개변수와 반환값

func multiply(a int, b int) int {
    return a * b
}

반환값이 없는 함수

func printMessage(msg string) {
    fmt.Println(msg)
}

2. 다중 반환값

Go에서는 여러 값을 반환할 수 있습니다.

예제: 다중 반환

func divide(a, b int) (int, int) {
    return a / b, a % b
}

func main() {
    quotient, remainder := divide(10, 3)
    fmt.Println("Quotient:", quotient, "Remainder:", remainder)
}


고급 활용

1. 익명 함수

익명 함수는 이름이 없는 함수로, 주로 즉시 실행 함수 또는 함수 값으로 사용됩니다.

예제: 익명 함수

package main

import "fmt"

func main() {
    // 즉시 실행 익명 함수
    func(msg string) {
        fmt.Println(msg)
    }("Hello, Anonymous Function!")
}

2. 고차 함수

Go에서는 함수를 매개변수로 전달하거나 반환값으로 사용할 수 있습니다.

예제: 고차 함수

func applyOperation(a, b int, operation func(int, int) int) int {
    return operation(a, b)
}

func main() {
    add := func(x, y int) int { return x + y }
    result := applyOperation(3, 5, add)
    fmt.Println("Result:", result)
}


3. 가변 매개변수

가변 매개변수는 여러 개의 인수를 받을 수 있습니다. 이를 위해 ... 구문을 사용합니다.

예제: 가변 매개변수

func sum(numbers ...int) int {
    total := 0
    for _, num := range numbers {
        total += num
    }
    return total
}

func main() {
    fmt.Println(sum(1, 2, 3, 4, 5)) // Output: 15
}


4. defer 키워드

defer는 함수 실행이 끝난 후 특정 코드를 실행하도록 예약합니다.

예제: defer

func main() {
    defer fmt.Println("This will run last")
    fmt.Println("This will run first")
}


5. 재귀 함수

함수가 자기 자신을 호출하는 것을 재귀라 합니다.

예제: 팩토리얼 계산

func factorial(n int) int {
    if n == 0 {
        return 1
    }
    return n * factorial(n-1)
}

func main() {
    fmt.Println(factorial(5)) // Output: 120
}


Go 함수의 주요 특성

  1. 강타입 언어:
    • 매개변수와 반환값의 타입을 명확히 선언해야 함.
  2. 다중 반환:
    • 한 함수에서 여러 개의 값을 반환 가능.
  3. 함수 값:
    • 함수는 일급 객체로, 변수에 할당하거나 매개변수로 전달 가능.
  4. 에러 처리:
    • Go의 함수는 주로 에러와 결과를 함께 반환하여 명시적 에러 처리를 권장.

결론

Go의 함수는 간결한 문법과 강력한 기능을 제공하여 코드의 재사용성을 높이고, 에러 처리를 명시적으로 관리할 수 있게 합니다. 기본적인 함수 작성부터 고급 기능(익명 함수, 고차 함수 등)까지 활용할 수 있어 다양한 프로그래밍 패턴을 구현할 수 있습니다.



🎬 유튜브 채널 🎬

 

위로그@WiLog

📢 안녕하세요, 위로그@WiLog 시청자 여러분, 저는 윌리(Willee) 입니다. 📢 위로그@WiLog 는 자기계발을 목적으로 하는 채널 입니다. 📢 오늘도 즐겁게~ 자신을 위한 계발을 함께 해보아요~ d^_^b 📌

www.youtube.com

🎬 치지직 채널 🎬

 

위로그 채널 - CHZZK

지금, 스트리밍이 시작됩니다. 치지직-

chzzk.naver.com


반응형