📘 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이다!"