인터페이스 메서드에서 유형 매개변수 사용
Go에서 일반 데이터 구조를 구현하려고 할 때 반복자 인터페이스를 정의할 때 오류가 발생했습니다. 유형 매개변수를 취하는 메소드를 사용합니다. 이 문서에서는 문제를 다루고 솔루션을 제공합니다.
인터페이스 정의 오류
초기 코드는 함수 유형 매개변수를 사용하는 메서드로 인터페이스를 정의합니다. 오류: "함수 유형은 유형 매개변수를 가질 수 없습니다." 마찬가지로 유형 매개변수를 메소드로 이동하면 "메소드는 유형 매개변수를 가질 수 없습니다."라는 오류가 발생했습니다.
해결책: 일반 인터페이스 정의
오류에서 제안한 대로 , Methoden은 전용 유형 매개변수를 가질 수 없습니다. 대신, 인터페이스 유형 자체에 유형 매개변수를 지정하는 것이 해결책입니다. 이를 통해 인터페이스 본문 내의 메소드에서 유형 매개변수를 사용할 수 있습니다.
수정된 코드:
type Iterator[T any] interface { ForEachRemaining(action func(T) error) error // other methods }
인터페이스 유형에 정의된 유형 매개변수를 사용하여 이제 다음에서 사용할 수 있습니다. 예상대로의 방법:
type MyIterator[T any] struct { // implementation of the iterator } func (i *MyIterator[T]) ForEachRemaining(action func(T) error) error { // implementation of the ForEachRemaining method using T return nil }
예 사용법
다음 예에서는 일반 반복기 인터페이스의 사용법을 보여줍니다.
package main import ( "fmt" "collection" ) type MyIterator[T any] struct { // implementation of the iterator } func (i *MyIterator[T]) ForEachRemaining(action func(T) error) error { // implementation of the ForEachRemaining method using T return nil } func main() { myIterator := &MyIterator[int]{} _ = myIterator.ForEachRemaining(func(num int) error { fmt.Println(num) return nil }) }
이 코드는 일반 반복기인 MyIterator를 정의하고 이를 사용하여 정수 조각을 반복합니다. , 각 값을 인쇄합니다.
위 내용은 Go 인터페이스 메서드에서 유형 매개변수를 어떻게 사용할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!