Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara menyelesaikan ralat golang: jenis bukan antara muka tidak boleh diberikan kepada antara muka{}, penyelesaian

Cara menyelesaikan ralat golang: jenis bukan antara muka tidak boleh diberikan kepada antara muka{}, penyelesaian

WBOY
WBOYasal
2023-08-21 14:03:461506semak imbas

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

Cara menyelesaikan ralat golang: jenis bukan antara muka tidak boleh diberikan kepada antara muka{ }, penyelesaian

Dalam proses menulis kod dalam Golang, kadangkala kita menghadapi mesej ralat biasa: jenis bukan antara muka tidak boleh ditetapkan kepada antara muka{ }. Mesej ralat ini mungkin muncul apabila atur cara cuba menetapkan jenis bukan antara muka kepada jenis{} antara muka. Jadi, bagaimana kita menyelesaikan masalah ini? Penyelesaiannya diperincikan di bawah, dengan contoh kod.

Pertama sekali, kita perlu memahami konsep antara muka dan jenis antara muka{} dalam Golang. Dalam Golang, antara muka ialah koleksi satu atau lebih tandatangan kaedah. Jenis antara muka{} mewakili antara muka kosong, iaitu, ia boleh menerima nilai apa-apa jenis. Memandangkan jenis antara muka{} boleh menerima sebarang jenis nilai, penegasan jenis diperlukan apabila memberikan nilai.

Berikut ialah contoh kod ringkas yang menunjukkan ralat jenis bukan antara muka tidak boleh diberikan kepada antara muka{ } semasa menetapkan dan penyelesaian yang sepadan:

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())
}

Dalam contoh di atas, kami mentakrifkan antara muka Haiwan Dan struktur Kucing, Struktur Cat melaksanakan kaedah Sebut. Dalam fungsi utama, kami mencipta objek Cat dan cuba memperuntukkannya kepada pembolehubah jenis antara muka{}. Dalam contoh ralat, kami tetapkan kucing secara langsung kepada haiwan, dan mesej ralat jenis bukan antara muka tidak boleh diberikan kepada antara muka{} akan muncul.

Untuk menyelesaikan masalah ini, kita perlu menggunakan penegasan jenis untuk menetapkan jenis bukan antara muka kepada jenis{} antara muka. Dalam contoh yang betul, kami menggunakan cat.(Animal) untuk menukar kucing kepada jenis antara muka Haiwan dan menetapkannya kepada pembolehubah haiwan. Dengan cara ini, jenis bukan antara muka boleh berjaya diberikan kepada jenis antara muka{}.

Untuk meringkaskan, apabila jenis bukan antara muka ralat tidak boleh diberikan kepada antara muka{} berlaku dalam Golang, kita perlu menggunakan penegasan jenis untuk menukar jenis bukan antara muka kepada jenis antara muka dan kemudian menetapkannya. Dengan cara ini kita boleh menyelesaikan isu tersebut dan meneruskan pengaturcaraan dan pembangunan seperti biasa. Saya harap penyelesaian dalam artikel ini dapat membantu anda.

Atas ialah kandungan terperinci Cara menyelesaikan ralat golang: jenis bukan antara muka tidak boleh diberikan kepada antara muka{}, penyelesaian. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn