Go Generics에서 색인 가능성에 대한 유형 제한
인덱싱은 많은 프로그래밍 시나리오에서 기본적인 작업입니다. 제네릭으로 작업할 때 제네릭 유형 매개변수를 인덱싱을 지원하는 유형으로 제한하는 것이 유리할 수 있습니다. 이렇게 하면 친숙한 첨자 구문을 사용하여 기본 유형에 액세스하고 수정할 수 있습니다.
이를 달성하는 한 가지 방법은 인터페이스 제약 조건을 사용하는 것입니다. 인터페이스는 구현할 유형에 필요한 작업 집합을 정의합니다. 이 경우 아래 첨자 연산자를 통해 인덱싱을 지원하는 유형을 나타내는 Indexable이라는 인터페이스를 정의할 수 있습니다.
<code class="go">type Indexable interface { ~[]byte | ~string }</code>
~ 연산자를 사용하면 인터페이스가 두 유형을 직접 받아들이고 해당 유형에 대한 포인터를 허용할 수 있습니다. 유형. 이를 통해 값 또는 참조 의미 체계로 작업할 수 있는 유연성을 얻을 수 있습니다.
다음으로 Indexable 유형을 매개변수로 사용하는 일반 함수를 만들 수 있습니다. 이 함수는 인덱싱과 관련된 유형에 대한 작업을 수행할 수 있습니다.
<code class="go">func GetAt[T Indexable](v T, i int) byte { return v[i] }</code>
GetAt 함수는 지정된 인덱스의 바이트 값을 반환합니다. 바이트 배열 및 문자열을 포함하여 Indexable 인터페이스를 구현하는 모든 유형과 함께 사용할 수 있습니다.
<code class="go">var data []byte = []byte{1, 2, 3, 4, 5} result := GetAt(data, 2) // result is 3</code>
합집합 제약 조건을 사용하면 함수 내에 적용할 수 있는 작업 집합이 제한된다는 점에 유의하는 것이 중요합니다. 이는 통합 제약 조건이 공통 작업 집합을 공유하는 인수로 유형 인수를 제한하기 때문입니다.
결론적으로 색인 가능성을 나타내는 인터페이스 제약 조건을 사용하는 것은 제네릭 유형을 제한하는 데 유용한 기술이 될 수 있습니다. 인덱싱을 지원하는 모든 유형에서 작동할 수 있는 일반 코드를 작성할 수 있습니다.
위 내용은 Go Generics에서 인덱싱 가능성을 위해 유형을 제한하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!