GO · 기초 문법
비교 연산과 comparable
Go에서 비교 가능한 타입과 불가능한 타입을 이해합니다. comparable 제약은 맵 키와 제네릭에서 중요합니다.
기초 문법중급comparableequalitymap-keygenerics
핵심 설명
Go에서 비교 가능한 타입과 불가능한 타입을 이해합니다. comparable 제약은 맵 키와 제네릭에서 중요합니다.
Go code
package main
import "fmt"
// comparable 제약: == 연산 가능한 타입만 허용
func contains[T comparable](slice []T, target T) bool {
for _, v := range slice {
if v == target {
return true
}
}
return false
}
func main() {
// 비교 가능: 숫자, 문자열, bool, 포인터, 채널, 배열
fmt.Println(contains([]int{1, 2, 3}, 2)) // true
fmt.Println(contains([]string{"a", "b"}, "c")) // false
// 구조체도 모든 필드가 comparable이면 비교 가능
type Point struct{ X, Y int }
fmt.Println(Point{1, 2} == Point{1, 2}) // true
// 슬라이스, 맵, 함수는 비교 불가
// []int{1} == []int{1} // 컴파일 에러
}학습 팁
맵의 키 타입은 반드시 비교 가능해야 합니다. 구조체를 맵 키로 사용하려면 모든 필드가 comparable이어야 합니다.
주의할 점
슬라이스, 맵, 함수 타입은 ==로 비교할 수 없습니다. nil과의 비교만 허용됩니다.
자주 묻는 질문
비교 연산과 comparable란 무엇인가요?
Go에서 비교 가능한 타입과 불가능한 타입을 이해합니다. comparable 제약은 맵 키와 제네릭에서 중요합니다.
비교 연산과 comparable 학습 시 주의할 점은 무엇인가요?
슬라이스, 맵, 함수 타입은 == 로 비교할 수 없습니다. nil 과의 비교만 허용됩니다.
Continue Learning
Go 학습을 이어가세요
총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.