핵심 유형 없이 일반 함수에서 슬라이스 합집합 반복
Go 1.18에서는 일반 함수를 사용하여 유형 작업이 가능합니다. 동적으로. 그러나 다양한 유형으로 구성된 슬라이스를 반복할 때 문제가 발생하면 추가 고려 사항이 필요합니다.
유형 제약 조건을 처리할 때는 핵심 유형의 개념을 이해해야 합니다. 인터페이스의 모든 유형에 대해 단일 기본 유형이 존재하거나 모든 채널이 동일한 요소 유형 및 방향을 가질 때 핵심 유형이 존재합니다.
초기 코드 예에서:
type NumberSlice interface { []int64 | []float64 }
인터페이스 제약조건 NumberSlice는 여러 기본 유형([]int64 및 []float64)으로 구성되어 있으므로 핵심 유형이 없습니다. 즉, 이 인터페이스의 조각을 범위로 지정할 수 없습니다.
이 장애물을 극복하기 위해 대신 기본 유형을 요구하도록 인터페이스를 수정할 수 있습니다.
type Number interface { int64 | float64 } func add[N Number](n []N) { for _, v := range n { fmt.Println(v) } }
이렇게 하면 다음과 같은 조각을 선언할 수 있습니다. int64 또는 float64를 사용하여 일반 함수 내에서 반복합니다.
또는 코어를 사용하여 보다 명시적인 인터페이스를 정의할 수 있습니다. 유형:
type NumberSlice[N int64 | float64] interface { ~[]N } func add[S NumberSlice[N], N int64 | float64](n S) { for _, v := range n { fmt.Println(v) } }
이 접근 방식은 인터페이스가 NumberSlice[N]을 구현하는 모든 유형에 대해 알려진 기본 유형인 []N을 갖도록 보장합니다.
이러한 조정을 통해 성공적으로 반복할 수 있습니다. 일반 함수 내에서 슬라이스의 합집합을 사용하여 코드의 유연성을 높입니다.
위 내용은 핵심 유형 없이 Go Generic 함수에서 슬라이스 결합을 어떻게 반복할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!