일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
Tags
- 패스트캠퍼스AI부트캠프
- 스코프
- golang pointer
- Pointer
- UpstageAILab
- golang
- golang slice
- 상수
- package
- keyword
- 패스트캠퍼스업스테이지에이아이랩
- method
- 패스트캠퍼스
- Interface
- array
- 함수
- golang array
- golang interface
- slice
- receiver
- 패스트캠퍼스업스테이지부트캠프
- 메서드
- golang slice remove
- scope
- 국비지원
- struct
- 업스테이지패스트캠퍼스
- receiver method
- 변수
- 타입
Archives
- Today
- Total
느리지만 꾸준히, 코딩
Golang 함수 []any(슬라이스 파라미터) 와 ...any(가변인자) 본문
개요
Go 언어에서 함수를 정의할 때 []any와 ...any는 모두 여러 개의 값을 받을 수 있는 파라미터를 나타내지만, 사용 방법과 의미에 차이가 있습니다. 두 방식의 차이점을 자세히 살펴보겠습니다.
[]any
[]any는 'any' 타입의 슬라이스를 나타냅니다.
- 정의: func someFunc(params []any) { ... }
- 호출: someFunc([]any{1, "hello", true})
특징: 함수에 전달할 때 반드시 슬라이스로 만들어서 전달해야 합니다.
...any
...any는 가변 인자를 나타냅니다.
- 정의: func someFunc(params ...any) { ... }
- 호출: someFunc(1, "hello", true) 또는 someFunc([]any{1, "hello", true}...)
특징:
- 함수 호출 시 개별 인자로 전달하거나, 슬라이스를 펼쳐서(spread) 전달할 수 있습니다.
- 함수 내부에서는 슬라이스처럼 다룰 수 있습니다.
- 항상 함수의 마지막 파라미터로만 사용할 수 있습니다.
- 마지막에 위치 하지 않으면, `Can only use '...' as the final argument in the list` 의 메시자가 노출됩니다.
1. 가변 인수 함수
Go에서는 함수의 인수가 고정된 갯수가 아니더라도 유동적으로 여러 개를 받을 수 있습니다. 이처럼 가변인수를 받기위해서 ... 문법을 사용할 수 있습니다. 이 문법을 사용하면 함수의 인수로 여러 값을 전달할 수 있으며, 이러한 인수는 슬라이스 형태로 전달됩니다.
package main
import (
"fmt"
)
func printNumbers(numbers ...int) {
for _, number := range numbers {
fmt.Println(number)
}
}
func main() {
printNumbers(1, 2, 3, 4, 5)
}
2. 슬라이스를 가변 인수로 전달
함수 호출 시 슬라이스를 가변 인수로 전달할 때는 `...` 문법을 사용하여 슬라이스의 요소를 개별 인수로 변환할 수 있습니다.
package main
import (
"fmt"
)
func printNumbers(numbers ...int) {
for _, number := range numbers {
fmt.Println(number)
}
}
func main() {
nums := []int{1, 2, 3, 4, 5}
printNumbers(nums...) // 슬라이스의 요소를 개별 인수로 전달
}
이 문법은 함수의 유연성을 높이고, 다양한 입력값을 처리할 때 매우 유용합니다.
정리
Go 언어에서 함수의 파라미터로 여러 값을 받을 수 있는 두 가지 주요 방법인 []any와 ...any의 차이점을 살펴보았습니다.
- []any:
- 슬라이스를 사용하여 함수에 여러 값을 전달합니다.
- 함수 정의 시 []any 타입의 슬라이스를 받아야 하며, 호출 시에는 슬라이스를 생성하여 전달해야 합니다.
- ...any:
- 가변 인자를 사용하여 함수에 여러 개의 값을 직접 전달할 수 있습니다.
- 함수 정의 시 ...any를 사용하며, 함수 호출 시 개별 인수로 전달하거나 슬라이스를 펼쳐서 전달할 수 있습니다.
- 함수 내부에서는 가변 인자가 슬라이스처럼 다루어질 수 있으며, 가변 인자는 함수의 마지막 파라미터로만 사용할 수 있습니다.
'프로그래밍 > Golang' 카테고리의 다른 글
Golang Date(날짜, 시간) 계산, 포맷팅 (0) | 2024.09.10 |
---|---|
Golang 캡슐화, 임베딩 (0) | 2024.08.09 |
Golang Error 인터페이스 (0) | 2024.08.07 |
Golang에서 문자열 자르기 (0) | 2024.08.07 |
Golang 정수 타입과 아키텍처 의존성 (0) | 2024.08.06 |