[Go] 4장 함수(Function)

1. 함수 

Go 언어에서 함수(Function)은 특정 작업에 수행하는 코드 블록으로, 함수를 정의 후 호출해 사용할 수 있고, 반환 값이 있을 수 있습니다. Go에서는 다중 반환 값을 지원합니다. Go 함수 특징은 다음과 같습니다.

 

  • 일급 객체: 함수는 변수에 할당할 수 있으며, 매개변수로 전달하거나 반환값으로 사용 가능
  • 다중 반환: 하나의 함수에서 여러 개의 값을 반환할 수 있음
  • 고계 함수: 함수를 매개변수로 받거나 반환하는 함수를 정의할 수 있음
  • 익명 함수: 이름이 없는 함수를 정의할 수 있으며, 필요할 때 즉시 호출 가능
  • 클로저: 함수가 자신이 정의된 환경(변수 등)을 기억

2. 함수 정의 및 사용법

Go에서 함수를 선언하려면 함수 정의 func를 사용해 값을 반환하면 됩니다.

func 함수이름(매개변수타입 매개변수이름) 반환값타입 {
  // 함수 본문
  return 반환값
}
  • 기본 함수
    • 기본적인 형태로, 특정 작업을 수행
package main

import "fmt"

func add(a int, b int) int {
	return a + b

}

func main() {
	result := add(2, 3)
	fmt.Println("result:", result)
}
  • 다중 반환 함수
    • 여러 값을 반환하는 함수
package main

import "fmt"

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

func main() {
	quotient, remainder := divide(10, 5)
	fmt.Println("result:", quotient, "나머지:", remainder)
}
  • 익명 함수
    • 이름이 없는 함수를 정의
package main

import "fmt"


func main() { 
	func() {
		fmt.Println("Not Name Function")
	}()
}
  • 고계 함수
    • 함수를 매개변수로 사용하는 함수
package main

import "fmt"

func add (a int, b int) int {
	return a + b
}

func apply(f func(int, int) int, x int, y int) int {
	return f(x, y)
}

func main() {
	result := apply(add, 2, 3) // 5
	fmt.Println(result) // 5
}
  • 클로저
    • 외부 변수를 캡처하여 사용할 수 있는 함수
package main

import "fmt"

func makeCounter() func() int {
	count := 0

	return func() int {
		count++ 
		return count
	}
}

func main() {
	counter := makeCounter()
	fmt.Println(counter()) // 1
	fmt.Println(counter()) // 2

}

요약

  • Go 언어의 함수는 일급 객체로, 다중 반환, 고계 함수, 익명 함수, 클로저 등 다양한 특징을 가짐
  • 함수는 정의 후 호출하여 사용할 수 있으며, 여러 형태로 활용 가능
 

GitHub - Koras02/Go-Bloging: https://thinky.tistory.com/category/Back-End/Go

https://thinky.tistory.com/category/Back-End/Go. Contribute to Koras02/Go-Bloging development by creating an account on GitHub.

github.com

 

LIST

'Back-End > Go' 카테고리의 다른 글

[Go] 6장 맵  (0) 2025.03.03
[GO] 5장 배열과 슬라이스  (0) 2025.02.28
[Go] 3장 제어 구조  (0) 2025.02.24
[Go] 2장 변수와 데이터 타입  (0) 2025.02.22
[GO] 1장 Go란 무엇인가? 컴파일 언어  (0) 2025.02.22