> 백엔드 개발 > Golang > Go에서 일반 인터페이스를 어떻게 올바르게 정의합니까?

Go에서 일반 인터페이스를 어떻게 올바르게 정의합니까?

Patricia Arquette
풀어 주다: 2024-12-04 13:02:10
원래의
691명이 탐색했습니다.

How Do I Correctly Define a Generic Interface in Go?

인터페이스의 제네릭

일반 프로그래밍을 사용하면 다양한 유형의 데이터로 작업할 수 있는 코드를 생성할 수 있습니다. Go에서는 유형 매개변수를 통해 이를 달성합니다. 제네릭의 일반적인 사용 사례 중 하나는 유형이 구현해야 하는 메서드 집합을 정의하는 인터페이스입니다.

반복기 인터페이스와 같은 제네릭 인터페이스를 만들려고 하면 함수 또는 관련 오류가 발생할 수 있습니다. 메소드 유형 매개변수. 일반 인터페이스를 정의하려면 인터페이스 내의 개별 메서드가 아닌 인터페이스 유형 자체에 유형 매개변수를 지정해야 합니다.

다음은 일반 반복기 인터페이스의 올바른 구현 예입니다.

type Iterator[T any] interface {
    ForEachRemaining(action func(T) error) error
    // other methods
}
로그인 후 복사

인터페이스 본문 내에서 T 유형 매개변수를 메소드의 다른 유형 매개변수처럼 사용할 수 있습니다.

여기에 더 자세한 내용이 있습니다. 고장:

  1. Iterator[T any] 구문은 유형 매개변수 T를 사용하여 일반 인터페이스를 정의합니다. 이는 인터페이스가 필요한 메소드를 구현하는 모든 유형의 데이터와 함께 사용될 수 있음을 의미합니다.
  2. ForEachRemaining 메서드는 T 유형의 값을 허용하는 함수 작업을 입력으로 사용합니다. 오류 반환 유형은 작업 함수가 오류를 생성할 수 있으며 반복기 메서드가 오류를 전달할 수 있음을 나타냅니다. caller.
  3. 특정 유형에 대한 Iterator 인터페이스를 구현하려면 인터페이스의 모든 메소드를 구현하는 유형을 정의해야 합니다. 예:
type MyIterator[T any] struct {
    // Implementation details
}

func (it *MyIterator[T]) ForEachRemaining(action func(T) error) error {
    // Implementation details
}
로그인 후 복사

인터페이스 유형에 유형 매개변수를 지정하고 이를 인터페이스 메소드 내에서 사용하면 다양한 유형의 데이터로 작업할 수 있는 일반 인터페이스를 생성하여 유연한 기반을 제공할 수 있습니다. Go에서 강력하고 재사용 가능한 코드를 구축하기 위한 것입니다.

위 내용은 Go에서 일반 인터페이스를 어떻게 올바르게 정의합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿