Go 언어 5강 - 가변 인자와 초기화 함수

 

📘 Go 언어 5강 - 가변 인자와 초기화 함수

이번 시간에는 가변 인자 함수init 함수를 배워서 Go 함수의 마무리를 짓습니다.
특히 ...표기법은 실전에서 자주 사용되니 꼭 익혀야 해요!

1️⃣ 가변 인자 (...)

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

호출 예시:

fmt.Println(sum(1, 2, 3))      // 6
fmt.Println(sum(5, 10, 15, 20)) // 50

2️⃣ 슬라이스 전달 시

슬라이스를 넘길 땐 ...슬라이스명 형태로 전달해야 합니다.

numbers := []int{4, 5, 6}
fmt.Println(sum(numbers...))

3️⃣ init 함수란?

init() 함수는 main()보다 먼저 자동 호출됩니다.

func init() {
    fmt.Println("자동 초기화 실행!")
}

사용 목적:

  • 패키지 초기 설정
  • 변수 초기화
  • 로그 출력

💡 예제 1: 평균 구하는 함수

func average(nums ...float64) float64 {
    total := 0.0
    for _, n := range nums {
        total += n
    }
    return total / float64(len(nums))
}

호출 예시:

fmt.Println("평균:", average(90.0, 85.5, 70.2))

💡 예제 2: init과 main 흐름 확인

package main

import "fmt"

func init() {
    fmt.Println("초기화 시작")
}

func main() {
    fmt.Println("메인 함수 실행")
}

결과:

초기화 시작
메인 함수 실행

🧠 요약

  • ...타입 → 가변 인자 함수 정의
  • 함수명(slice...) → 슬라이스 넘기기
  • init() → 자동 실행 함수, main보다 먼저 실행

한 줄 요약: "Go 함수의 꽃은 ...와 init이다!"