ホームページ  >  記事  >  バックエンド開発  >  golang エラーを解決する方法: 非インターフェース型をインターフェースに割り当てることはできません。{}、解決策

golang エラーを解決する方法: 非インターフェース型をインターフェースに割り当てることはできません。{}、解決策

WBOY
WBOYオリジナル
2023-08-21 14:03:461465ブラウズ

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

Golang エラーを解決する方法: 非インターフェイス型をインターフェイス{ } に割り当てることはできません、解決策

Golang でコードを作成する過程で、時々 A が発生することがあります。一般的なエラー メッセージ: 非インターフェイス タイプをインターフェイス{ }に割り当てることはできません。このエラー メッセージは、プログラムが非インターフェース タイプをインターフェース タイプに割り当てようとしたときに表示されることがあります。{}では、この問題をどのように解決すればよいでしょうか?解決策については、コード例とともに以下で詳しく説明します。

まず、Golang のインターフェースとインターフェース タイプの概念を理解する必要があります。{} Golang では、インターフェイスは 1 つ以上のメソッド シグネチャのコレクションです。 Interface{} タイプは空のインターフェースを表します。つまり、任意のタイプの値を受け入れることができます。 Interface{} タイプは任意のタイプの値を受け入れることができるため、値を割り当てる際にはタイプ アサーションが必要です。

以下は、代入時のエラー「非インターフェイス型をインターフェイス{ }に割り当てることができません」と、対応する解決策を示す簡単なコード例です。

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 メソッドを実装します。 main 関数では、Cat オブジェクトを作成し、interface{} 型の変数にそれを割り当てようとします。エラーの例では、cat をanimal に直接割り当てているため、非インターフェイス タイプをインターフェイスに割り当てることができないというエラー メッセージが表示されます。{}

この問題を解決するには、型アサーションを使用して非インターフェース型をインターフェース型に割り当てる必要があります。{}正しい例では、cat.(Animal) を使用して cat を Animal インターフェイス型に変換し、それをanimal 変数に割り当てます。このようにして、非インターフェース タイプをインターフェース タイプに正常に割り当てることができます。{}

要約すると、Golang で「非インターフェース型をインターフェースに割り当てることができない」というエラーが発生した場合、型アサーションを使用して非インターフェース型をインターフェース型に変換して割り当てる必要があります。{}これにより、問題を解決し、通常どおりプログラミングと開発を続行できます。この記事の解決策がお役に立てば幸いです。

以上がgolang エラーを解決する方法: 非インターフェース型をインターフェースに割り当てることはできません。{}、解決策の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。