예제와 함께 설명하자.
인터페이스를 구현하는 한, 요소의 기본 유형에 관계없이 슬라이스에서 최대 요소를 찾는 함수를 원한다고 가정 해 봅시다. 인터페이스 인터페이스 내의 Comparable
메소드를 사용하면 함수가 특정 유형에 관계없이 요소를 비교할 수 있습니다. 이것은 제네릭이 인터페이스와 완벽하게 통합하여 유형-안전 및 재사용 가능한 코드를 제공하는 방법을 보여줍니다.
<code class="go">package main import ( "fmt" ) type Comparable interface { Less(other interface{}) bool } func Max[T Comparable](slice []T) T { if len(slice) == 0 { var zero T return zero // Handle empty slice } max := slice[0] for _, v := range slice { if v.Less(max) { max = v } } return max } type Int int func (i Int) Less(other interface{}) bool { return i < other.(Int) } type String string func (s String) Less(other interface{}) bool { return s < other.(String) } func main() { intSlice := []Int{1, 5, 2, 8, 3} stringSlice := []String{"banana", "apple", "orange"} maxInt := Max(intSlice) maxString := Max(stringSlice) fmt.Println("Max int:", maxInt) // Output: Max int: 8 fmt.Println("Max string:", maxString) // Output: Max string: orange }</code>제네릭에서는 특정 인터페이스 제약 조건을 만족하는 모든 유형과 함께 작동하는 단일 함수 또는 유형을 작성합니다. 이것은 중복성을 크게 줄입니다. 위의
예제는 다음을 완벽하게 보여줍니다. 하나의 기능은 , Max
또는 인터페이스를 구현하는 다른 유형에 대해 작동하여 별도의 T
, 등의 기능을 제거합니다. 이 재사용 성이 높아지고 더 깨끗하고 유지 관리 가능하며 오류가 발생하기 쉬운 코드베이스로 이어집니다. Comparable
Go에서 제네릭과 인터페이스를 함께 사용할 때 피해야 할 일반적인 함정은 무엇입니까? Less
Comparable
일반 및 인터페이스를 결합 할 때 몇 가지 함정이 발생할 수 있습니다.
위 내용은 이동 중에 인터페이스가있는 제네릭을 어떻게 사용합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!