GO · 기초 문법
comparable 제약
comparable은 ==와 != 연산이 가능한 타입을 나타내는 내장 제약입니다. 맵 키 타입으로 사용됩니다.
기초 문법중급comparablegenericssetmap-key
핵심 설명
comparable은 ==와 != 연산이 가능한 타입을 나타내는 내장 제약입니다. 맵 키 타입으로 사용됩니다.
Go code
package main
import "fmt"
// comparable: ==, != 연산 가능한 타입
func Index[T comparable](slice []T, target T) int {
for i, v := range slice {
if v == target {
return i
}
}
return -1
}
// 맵 키로 사용
type Set[T comparable] map[T]struct{}
func NewSet[T comparable](items ...T) Set[T] {
s := make(Set[T])
for _, item := range items {
s[item] = struct{}{}
}
return s
}
func (s Set[T]) Has(item T) bool {
_, ok := s[item]
return ok
}
func main() {
fmt.Println(Index([]string{"a", "b", "c"}, "b")) // 1
fruits := NewSet("apple", "banana", "cherry")
fmt.Println(fruits.Has("banana")) // true
fmt.Println(fruits.Has("grape")) // false
}학습 팁
comparable은 맵 키 타입이 충족해야 하는 제약과 동일합니다. 제네릭 세트, 캐시 등에 필수적으로 사용됩니다.
주의할 점
슬라이스, 맵, 함수 타입은 comparable을 만족하지 않습니다. 이들을 맵 키나 세트 원소로 사용할 수 없습니다.
자주 묻는 질문
comparable 제약란 무엇인가요?
comparable 은 == 와 != 연산이 가능한 타입을 나타내는 내장 제약입니다. 맵 키 타입으로 사용됩니다.
comparable 제약 학습 시 주의할 점은 무엇인가요?
슬라이스, 맵, 함수 타입은 comparable 을 만족하지 않습니다. 이들을 맵 키나 세트 원소로 사용할 수 없습니다.
Continue Learning
Go 학습을 이어가세요
총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.