개요
- go1.23.0부터 사용 가능
- Documentation
- 비교 가능한 값을 표준화(interning, hash-consing)하기 위한 기능을 제공
type Handle[T comparable] struct
- T 유형의 일부 값에 대한 전역적으로 고유한 ID
func Make[T comparable](value T) Handle[T]
- T 유형의 값에 대한 전역적으로 고유한 핸들을 반환
func (h Handle[T]) Value() T
- Handle을 생성한 T 값의 얕은 사본을 반환
- 두 핸들은 핸들을 생성하는 데 사용된 값이 동일한 경우에만 동일
- 두 핸들을 비교하는 것은 간단한 포인터 비교로 축소되어 핸들을 만드는 데 사용된 값을 비교하는 것보다 훨씬 효율적
예제
- 코드
-
package main
import (
"unique"
)
func main() {
type T01 struct {
i int
}
handle01 := unique.Make(T01{i: 1})
println("~~~ 1 :", handle01.Value().i)
handle02 := unique.Make(T01{i: 1})
println("~~~ 2 :", handle02.Value().i)
handle03 := unique.Make(T01{i: 2})
println("~~~ 3 :", handle03.Value().i)
println("~~~ 4 :", handle01 == handle02)
println("~~~ 5 :", handle01 == handle03)
}
- 실행 결과
-
~~~ 1 : 1
~~~ 2 : 1
~~~ 3 : 2
~~~ 4 : true
~~~ 5 : false