Go 1.18에 제네릭이 도입되면서 개발자는 유형 제약 조건이 있는 유형을 정의하여 특정 유형만 허용되도록 할 수 있습니다. 이러한 유연성은 인덱스를 지원하는 유형에 의존하는 알고리즘을 구현할 때 매우 중요합니다.
인덱스 메서드로 유형을 제한할 수 있습니까?
인덱스로 유형을 제한하려면 다음을 고려할 수 있습니다. 인덱싱 가능성 속성을 사용합니다. 그러나 생성할 수 있는 유일한 의미 있는 제약 조건은 type Indexable 인터페이스 { ~[]byte | ~문자열 }. 이 제약 조건은 유형을 바이트 슬라이스와 문자열로 제한합니다.
Union 제약 조건이 제한된 이유는 무엇입니까?
Union 제한 유형에 허용되는 작업은 다음에서 지원하는 작업으로 제한됩니다. 제약 세트의 모든 유형. 인덱싱을 지원하려면 Union의 유형은 동일한 키 및 요소 유형을 가져야 합니다.
또한 Union의 맵 유형은 동일한 키 유형을 가져야 합니다. 배열의 경우 길이가 유형의 일부이므로 가능한 모든 길이에 대해 공용체를 정의하는 것이 비현실적입니다.
인덱싱을 위한 실제 구현
따라서 유일한 인덱싱 요구 사항을 충족하는 공용체는 []byte | 끈. byte는 uint8의 별칭이므로 이 제약 조건과 함께 []uint8을 사용할 수도 있습니다.
인덱싱을 위한 Union 제약 조건의 제한
Union 제약 조건 []byte | 문자열은 인덱싱을 지원하지만 범위를 지원하지 않습니다. 이는 공용체에 핵심 유형이 없기 때문입니다.
결론적으로 Go 제네릭에서 인덱스를 지원하는 유형으로 유형을 제한하는 것은 특정 제약 유형 Indexable 인터페이스 { ~[]byte | ~문자열 }. 이 외에는 색인 가능한 모든 유형을 포괄하는 제약 조건을 정의하는 다른 방법이 없습니다.
위 내용은 Go 1.18 Generics에서 인덱스를 지원하도록 유형을 제한할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!