이번 편의 목표: 두 값 중 작지 않은 쪽을 고르는 함수를, 정수에 한정하지 않고 비교 가능한 타입으로 적습니다.
함수 이름 뒤의 [T cmp.Ordered]가 타입 매개변수입니다. cmp.Ordered는 크기 비교가 되는 타입이라는 조건입니다. 호출하는 곳의 인자에서 T가 정해집니다.
package main
import (
"cmp"
"fmt"
)
func larger[T cmp.Ordered](left, right T) T {
if left >= right {
return left
}
return right
}
func main() {
fmt.Println(larger(3, 5))
}출력은 5입니다. 3과 5는 둘 다 int이므로 T는 int입니다. 한 호출 안에서 left와 right의 타입은 같아야 합니다. 정수와 문자열을 한 호출에 섞을 수 없습니다.
타입 매개변수가 없으면 정수용 함수와 문자열용 함수를 따로 만들어야 합니다. 조건이 Ordered이므로 비교 연산이 없는 구조체는 이 함수에 넘기지 못합니다.
직접 해 보기
larger(10, 7)을 출력해 10이 나오는지 확인하세요.
해설
10이 7보다 작지 않으므로 left가 반환됩니다. 비교 방향은 함수 안의 >= 입니다.
COMMENTS
댓글 0
이 글에 대한 의견이나 질문을 남겨 주세요.
댓글은 구글이나 카카오로 시작한 뒤에 남길 수 있습니다.
등록된 댓글이 없습니다.