>  기사  >  백엔드 개발  >  golang 오류 해결 방법: 인터페이스가 아닌 유형을 인터페이스{}에 할당할 수 없습니다. 해결 방법

golang 오류 해결 방법: 인터페이스가 아닌 유형을 인터페이스{}에 할당할 수 없습니다. 해결 방법

WBOY
WBOY원래의
2023-08-21 14:03:461504검색

如何解决golang报错:non-interface type cannot be assigned to interface{ },解决方案

golang 오류 해결 방법: 인터페이스가 아닌 유형을 인터페이스{ }에 할당할 수 없습니다. 해결책

Golang에서 코드를 작성하는 과정에서 가끔 일반적인 오류 메시지가 표시됩니다. 인터페이스가 아닌 유형을 인터페이스{ }에 할당할 수 없습니다. 상호 작용{ }. 이 오류 메시지는 프로그램이 인터페이스 유형에 비인터페이스 유형을 할당하려고 할 때 나타날 수 있습니다.{} 그렇다면 이 문제를 어떻게 해결합니까? 솔루션은 코드 예제와 함께 아래에 자세히 설명되어 있습니다.

먼저 Golang의 인터페이스 개념과 인터페이스 유형을 이해해야 합니다. Golang에서 인터페이스는 하나 이상의 메소드 서명 모음입니다. 인터페이스{} 유형은 빈 인터페이스를 나타냅니다. 즉, 모든 유형의 값을 허용할 수 있습니다. 인터페이스{} 유형은 모든 유형의 값을 허용할 수 있으므로 값을 할당할 때 유형 어설션이 필요합니다.

다음은 할당 시 non-interface type could not be 할당 to 인터페이스{ } 오류와 해당 해결 방법을 보여주는 간단한 코드 예시입니다.

package main

import (
    "fmt"
)

type Animal interface {
    Say() string
}

type Cat struct {
    Name string
}

func (c Cat) Say() string {
    return "Meow"
}

func main() {
    cat := Cat{Name: "Tom"}

    // 错误示例:尝试将非接口类型赋值给interface{}类型
    var animal interface{}
    animal = cat // 报错:non-interface type cannot be assigned to interface{}
    fmt.Println(animal)

    // 正确示例:使用类型断言将非接口类型赋值给interface{}类型
    animal = cat.(Animal)
    fmt.Println(animal.Say())
}

위 예시에서는 Animal 인터페이스와 Cat 구조를 정의합니다. Cat 구조는 Say 메소드를 구현합니다. 기본 함수에서는 Cat 객체를 생성하고 이를 인터페이스{} 유형의 변수에 할당하려고 합니다. 오류 예시에서는 고양이를 동물에 직접 할당했으며, 오류 메시지 non-interface type could not be 할당된 인터페이스{}가 나타납니다.

이 문제를 해결하려면 유형 어설션을 사용하여 인터페이스 유형에 비인터페이스 유형을 할당해야 합니다.{} 올바른 예에서는 cat.(Animal)을 사용하여 cat을 Animal 인터페이스 유형으로 변환하고 이를 Animal 변수에 할당합니다. 이러한 방식으로 비인터페이스 유형을 인터페이스 유형에 성공적으로 할당할 수 있습니다.{}

요약하자면, Golang에서 비인터페이스 유형을 인터페이스에 할당할 수 없다는 오류가 발생하는 경우{} 유형 어설션을 사용하여 비인터페이스 유형을 인터페이스 유형으로 변환한 후 할당해야 합니다. 이렇게 하면 문제를 해결하고 정상적으로 프로그래밍과 개발을 계속할 수 있습니다. 이 기사의 솔루션이 도움이 되기를 바랍니다.

위 내용은 golang 오류 해결 방법: 인터페이스가 아닌 유형을 인터페이스{}에 할당할 수 없습니다. 해결 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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