"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > ## Go에서 인터페이스 슬라이스를 호환 가능한 인터페이스 슬라이스로 변환하는 방법은 무엇입니까?

## Go에서 인터페이스 슬라이스를 호환 가능한 인터페이스 슬라이스로 변환하는 방법은 무엇입니까?

2024-11-02에 게시됨
검색:820

## How to Convert a Slice of Interfaces to a Compatible Interface Slice in Go?

인터페이스 조각을 호환 가능한 인터페이스 조각으로 변환

겹치는 메서드를 포함하는 다양한 인터페이스를 구현하면 프로그래밍 유연성을 제공할 수 있습니다. 그러나 하나의 인터페이스 조각을 다르지만 호환 가능한 인터페이스를 기대하는 함수에 전달하면 오류가 발생할 수 있습니다. Go에서 이 문제를 해결하는 방법을 살펴보겠습니다.

A에 B가 포함된 인터페이스 A와 B가 있다고 가정합니다. A, Impl의 구현은 A와 B를 모두 만족합니다.

type A interface {
    Close() error
    Read(b []byte) (int, error)
}

type Impl struct {}

func (I Impl) Read(b []byte) (int, error) {
    fmt.Println("In read!")
    return 10, nil
}

func (I Impl) Close() error {
    fmt.Println("I am here!")
    return nil
}

개별 항목을 함수 간에 쉽게 전달할 수 있습니다. 그러나 A의 조각을 io.Reader를 기대하는 함수에 전달하려는 시도는 실패할 수 있습니다.

func single(r io.Reader) {
    fmt.Println("in single")
}

func slice(r []io.Reader) {
    fmt.Println("in slice")
}

im := &Impl{}

// works
single(im)

// FAILS!
list := []A{t}
slice(list)

이 문제를 해결하려면 []io.Reader 유형의 새 조각을 만들고 []A의 요소로 채울 수 있습니다. 이는 제한을 우회하고 서로 다르지만 겹치는 인터페이스 유형 간의 호환성을 보장하는 해결 방법입니다.

최신 튜토리얼 더>
  • Tailwind CSS: 구성 사용자 정의
    Tailwind CSS: 구성 사용자 정의
    소개 Tailwind CSS는 최근 몇 년 동안 웹 개발자들 사이에서 엄청난 인기를 얻은 인기 있는 오픈 소스 CSS 프레임워크입니다. 아름답고 현대적인 사용자 인터페이스를 만들기 위한 고유한 사용자 정의 가능한 접근 방식을 제공합니다. Tailwind...
    프로그램 작성 2024-11-03에 게시됨
  • jQuery를 사용하여
    jQuery를 사용하여
    jQuery가 무엇인가요? jQuery는 HTML 문서 탐색, 조작, 이벤트 처리 및 애니메이션과 같은 작업을 단순화하도록 설계된 기능이 가득한 빠른 Javascript 라이브러리입니다. "적게 쓰고 더 많이 쓰세요" MDN 상태: jQuery를 사용...
    프로그램 작성 2024-11-03에 게시됨
  • CONCAT()은 완전한 이름 일치를 위해 MySQL 검색 기능을 어떻게 향상시킬 수 있습니까?
    CONCAT()은 완전한 이름 일치를 위해 MySQL 검색 기능을 어떻게 향상시킬 수 있습니까?
    WHERE 절의 MySQL CONCAT() 함수를 사용한 효율적인 검색한 가지 일반적인 데이터베이스 작업은 여러 열에서 데이터를 검색하는 것입니다. 그러나 이름과 성 필드를 별도로 사용하여 이름을 검색할 경우 불완전한 일치 항목을 캡처하는 등의 제한 사항이 있을 수 있...
    프로그램 작성 2024-11-03에 게시됨
  • [일일 패키지] ms
    [일일 패키지] ms
    ms ms는 다양한 시간 형식을 밀리초로 변환하거나 그 반대로 변환합니다. /* time format to milliseconds */ ms('2 days') // 172800000 ms('1d') // 86400000 ms('10h') ...
    프로그램 작성 2024-11-03에 게시됨
  • WordPress 데이터베이스를 로컬에서 프로덕션으로 마이그레이션하는 것을 고려해야 합니다.
    WordPress 데이터베이스를 로컬에서 프로덕션으로 마이그레이션하는 것을 고려해야 합니다.
    로컬 환경에서 프로덕션 서버로 데이터베이스를 마이그레이션하는 것은 부담스러울 수 있지만 올바른 접근 방식을 사용하면 반드시 그럴 필요는 없습니다. 이 가이드에서는 원활한 마이그레이션 프로세스를 보장하기 위해 고려해야 할 주요 사항을 살펴보겠습니다. 데이터...
    프로그램 작성 2024-11-03에 게시됨
  • JavaScript의 중첩 객체 이해
    JavaScript의 중첩 객체 이해
    객체는 JavaScript 개발자로서 작업하는 작업이며, 말할 필요도 없이 TypeScript에도 적용됩니다. TypeScript는 객체 속성에 대한 유형 정의를 정의하는 다양한 방법을 제공합니다. 이 게시물 전체에서 간단한 예부터 시작하여 몇 가지 고급 유형 정의로 ...
    프로그램 작성 2024-11-03에 게시됨
  • 생성자 오버로드
    생성자 오버로드
    생성자도 메서드처럼 오버로드될 수 있습니다. 생성자 오버로드를 사용하면 다양한 방법으로 객체를 생성할 수 있습니다. MyClass 클래스에는 4개의 오버로드된 생성자가 있으며 각각은 객체를 다르게 초기화합니다. 새 문에 제공된 매개변수를 기반으로 적절한 생성자가 호출...
    프로그램 작성 2024-11-02에 게시됨
  • Node.js로 JavaScript의 힘을 발휘해보세요!
    Node.js로 JavaScript의 힘을 발휘해보세요!
    JavaScript는 더 이상 브라우저만을 위한 것이 아닙니다. Node.js 덕분에 서버 측도 대신하게 되었습니다. ? 노련한 개발자이든 이제 막 시작하는 개발자이든 Node.js를 마스터하는 것은 판도를 바꾸는 일입니다. Node.js를 시작해야 하는 이유는 다음과...
    프로그램 작성 2024-11-02에 게시됨
  • INMET-BDMEP 기후 데이터 수집 및 처리
    INMET-BDMEP 기후 데이터 수집 및 처리
    Os dados climáticos desempenham um papel crucial em diversos setores, auxiliando em estudos e previsões que impactam áreas como agricultura, planejame...
    프로그램 작성 2024-11-02에 게시됨
  • LLP 등록: 주요 이점 및 법적 요구 사항
    LLP 등록: 주요 이점 및 법적 요구 사항
    귀하의 비즈니스를 유한 책임 파트너십(LLP)으로 등록하는 것은 유연성, 법적 보호 및 단순화된 규정 준수의 고유한 조합으로 인해 기업가와 전문가 사이에서 점점 더 인기 있는 선택이 되고 있습니다. LLP 등록은 뚜렷한 이점을 제공하며 간소화되고 효율적인 비즈니스 구...
    프로그램 작성 2024-11-02에 게시됨
  • HLHealth 레벨 7)
    HLHealth 레벨 7)
    HL7은 Health Level 7이라고도 알려져 있으며 다양한 의료 시스템에서 전자 정보를 통합, 교환, 관리 및 검색하는 데 사용되는 메시징 및 임상 표준 표준입니다. 환자의 병원 입원과 같은 이벤트에 의해 촉발되는 트랜잭션을 기반으로 하는 프로토콜입니다. HL7은...
    프로그램 작성 2024-11-02에 게시됨
  • 별도의 스레드에서 Qt MainWindow를 안전하게 업데이트하는 방법은 무엇입니까?
    별도의 스레드에서 Qt MainWindow를 안전하게 업데이트하는 방법은 무엇입니까?
    Qt - 두 번째 스레드로 기본 창 업데이트멀티 스레드 Qt 애플리케이션에서 별도의 스레드에서 기본 UI(mainwindow.ui) 업데이트 도전을 제기할 수 있습니다. 이 문서에서는 사용자 정의 스레드 내에서 UI 요소(예: 주어진 코드의 ana->ui->horizo...
    프로그램 작성 2024-11-02에 게시됨
  • NgRx를 사용하여 각도 상태 관리 마스터하기
    NgRx를 사용하여 각도 상태 관리 마스터하기
    State management in Angular ensures that data is consistently and efficiently shared across all parts of an application. Instead of each component man...
    프로그램 작성 2024-11-02에 게시됨
  • Hexabot 설정 및 비주얼 편집기 튜토리얼: 첫 번째 AI Chatbot 구축
    Hexabot 설정 및 비주얼 편집기 튜토리얼: 첫 번째 AI Chatbot 구축
    챗봇 매니아 여러분, 안녕하세요! 이 튜토리얼에서는 오픈 소스 AI 챗봇 빌더인 Hexabot을 설정하고 사용하는 과정을 안내합니다. 먼저 GitHub 저장소 복제, 종속성 설치, Hexabot용 환경 변수 구성부터 시작하겠습니다. 또한 Docker를 사용하여 프로젝트...
    프로그램 작성 2024-11-02에 게시됨
  • mysql_fetch_row(), mysql_fetch_assoc() 및 mysql_fetch_array(): 어느 것을 선택해야 합니까?
    mysql_fetch_row(), mysql_fetch_assoc() 및 mysql_fetch_array(): 어느 것을 선택해야 합니까?
    mysql_fetch_row(), mysql_fetch_assoc() 및 mysql_fetch_array() 설명됨배경:사용되지 않는 MySQL 확장을 사용하면 결과 집합에서 데이터를 검색하기 위해 mysql_fetch_row(), mysql_fetch_assoc() ...
    프로그램 작성 2024-11-02에 게시됨

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3