Go Generics의 물결표 토큰(~) 이해
Go Generics에서 물결표 토큰(~)은 정의하는 데 중요한 역할을 합니다. 주어진 유형의 기본 유형. 이는 T를 기본 유형으로 공유하는 유형의 컬렉션을 나타내는 ~T 형식으로 작동합니다.
이 개념은 유형에서 파생된 유형을 허용하는 제약 조건을 지정하려는 경우에 특히 유용합니다. 특정 기본 유형. 예를 들어 다음 인터페이스 제약 조건을 고려해보세요.
type Ordered interface { Integer | Float | ~string }
이 예에서 제약 조건은 정수, 부동 소수점 또는 기본 유형이 문자열인 유형인 모든 유형을 허용할 수 있는 인터페이스를 정의합니다. . 이는 사용자 정의 문자열 유형을 정의하는 MyString과 같은 유형도 기본 유형이 문자열로 유지되는 한 이 제약 조건을 충족할 수 있음을 의미합니다.
Go의 기본 유형
"기본 유형"이라는 용어는 특정 유형의 기초가 되는 기본 유형을 나타냅니다. Go에서는 유형 선언에 따라 결정됩니다. int, string, bool과 같은 기본 유형의 경우 기본 유형은 유형 자체입니다. 그러나 구조체, 슬라이스 및 인터페이스와 같은 복합 유형의 경우 기본 유형은 유형 선언에서 참조되는 유형입니다.
Tilde 토큰 사용 예시
다음 코드는 물결표 토큰의 사용을 보여줍니다.
type Foo struct { n int } type ByteSlice []byte type MyInt8 int8 type MyString string func echoExact[T ExactSigned](t T) T { // Only allows exact types, excluding MyInt8 } func echo[T constraints.Signed](t T) T { // Allows types with underlying type int8, including MyInt8 }
이 예에서는 ExactSigned는 MyInt8을 제외한 정확한 유형만 사용합니다. 반면에 Constraints.Signed는 ~int8과 같은 근사 요소를 포함하기 때문에 MyInt8을 허용합니다.
참고: Tilde 토큰의 제한 사항
물결표 토큰은 유형 매개변수와 함께 사용할 수 없습니다. 예를 들어 다음 코드는 유효하지 않습니다.
type AnyApprox[T any] interface { ~T }
위 내용은 기본 유형을 정의하기 위해 Go Generics에서 물결표(~) 토큰이 어떻게 작동합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!