>  기사  >  백엔드 개발  >  Go에서 호환되지만 다른 인터페이스의 조각을 기대하는 함수에 한 인터페이스의 조각을 전달하는 방법은 무엇입니까?

Go에서 호환되지만 다른 인터페이스의 조각을 기대하는 함수에 한 인터페이스의 조각을 전달하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-10-25 10:22:02220검색

How to Pass a Slice of One Interface to a Function Expecting a Slice of a Compatible but Different Interface in Go?

인터페이스 슬라이스를 다른 호환 가능한 인터페이스 슬라이스로 전달

Go에서는 슬라이스를 전달하려고 할 때 문제가 발생할 수 있습니다. 다르지만 호환 가능한 인터페이스의 일부를 기대하는 함수에 대한 인터페이스입니다. 단일 항목은 성공적으로 전달될 수 있지만 원래 인터페이스의 일부는 실패할 수 있습니다.

예를 들어 A와 B라는 두 개의 인터페이스가 있고 A에 B가 포함되어 있고 B도 충족하는 A의 구체적인 구현이 있는 경우 , 이 문제가 발생할 수 있습니다. io.Reader를 기대하는 함수에 A 유형의 개별 항목을 전달하는 것은 작동하지만, []io.Reader를 기대하는 함수에 A의 조각을 전달하려는 시도는 실패합니다.

이는 Go가 정적으로 유형화된 언어이며 암시적 유형 변환을 허용하지 않습니다. 이 문제를 해결하려면 예상되는 유형의 새 조각을 생성하고 원본 조각의 요소를 수동으로 할당해야 합니다. 제공된 예에서 오류 메시지는 []A를 []io.Reader에 직접 할당할 수 없음을 나타냅니다.

따라서 권장되는 해결 방법은 []io.Reader의 새 조각을 만들고 요소를 복사하는 것입니다. []A 슬라이스에서 수동으로. 이렇게 하면 함수가 예상대로 올바른 유형의 슬라이스를 수신할 수 있습니다.

위 내용은 Go에서 호환되지만 다른 인터페이스의 조각을 기대하는 함수에 한 인터페이스의 조각을 전달하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.