Selesaikan ralat golang: jenis penerima tidak sah 'x' ('x' bukan jenis yang ditentukan), penyelesaian

PHPz
Lepaskan: 2023-08-26 10:31:54
asal
1563 orang telah melayarinya

解决golang报错:invalid receiver type 'x' ('x' is not a defined type),解决方法

Penyelesaian kepada ralat golang: jenis penerima tidak sah 'x' ('x' bukan jenis yang ditentukan), penyelesaian

Dalam proses pengaturcaraan dengan Golang, kita sering menghadapi pelbagai ralat. Salah satu ralat biasa ialah "jenis penerima tidak sah 'x' ('x' bukan jenis yang ditentukan)". Mesej ralat ini bermakna kami menggunakan jenis yang tidak ditentukan sebagai penerima semasa mengisytiharkan kaedah tersebut. Dalam artikel ini, saya akan menunjukkan kepada anda cara menyelesaikan masalah ini dan memberikan contoh kod yang sepadan.

Apabila ralat di atas berlaku, mula-mula kita perlu menyemak sama ada jenis penerima dalam kod ditakrifkan dengan betul. Jenis penerima ialah jenis yang mendahului senarai parameter dalam pengisytiharan kaedah. Kita perlu memastikan bahawa jenis penerima adalah jenis yang ditentukan dan bukan jenis yang tidak wujud.

Mari kita lihat contoh kod:

package main

import "fmt"

type Point struct {
    X int
    Y int
}

func (p Point) Print() {
    fmt.Printf("Point coordinates: (%d, %d)
", p.X, p.Y)
}

func main() {
    p := Point{X: 1, Y: 2}
    p.Print()
}
Salin selepas log masuk

Kod di atas mentakrifkan struktur bernama Point dan mentakrifkan kaedah Cetak untuknya. Dalam kaedah Cetak, kami menggunakan jenis Titik sebagai jenis penerima. Dengan cara ini, kita boleh memanggil kaedah Cetak melalui pembolehubah jenis Titik untuk mencetak koordinat titik.

Namun, jika kami tersilap menggunakan jenis yang tidak ditentukan sebagai jenis penerima dalam kod, ia akan menyebabkan ralat "jenis penerima tidak sah". Mari lihat contoh kod yang diubah suai:

package main

import "fmt"

type Point struct {
    X int
    Y int
}

type Polygon []Point

func (p Polygon) Print() {
    for _, point := range p {
        fmt.Printf("Polygon point coordinates: (%d, %d)
", point.X, point.Y)
    }
}

func main() {
    poly := Polygon{{X: 1, Y: 2}, {X: 3, Y: 4}, {X: 5, Y: 6}}
    poly.Print()
}
Salin selepas log masuk

Dalam kod yang diubah suai, kami mentakrifkan jenis Poligon, iaitu sekeping Titik. Kemudian kami cuba menggunakan jenis Poligon sebagai jenis penerima kaedah Cetak. Memandangkan jenis Poligon ditakrifkan oleh kami sendiri dan tidak ditakrifkan oleh perpustakaan standard atau di tempat lain, pengkompil akan melaporkan ralat "jenis penerima tidak sah 'Polygon' ('Polygon' bukan jenis yang ditentukan)".

Untuk menyelesaikan masalah ini, kita perlu menukar jenis penerima kepada jenis yang telah ditetapkan Sebagai contoh, kita boleh menukar jenis penerima kepada penunjuk kepada jenis Poligon:

func (p *Polygon) Print() {
    for _, point := range *p {
        fmt.Printf("Polygon point coordinates: (%d, %d)
", point.X, point.Y)
    }
}
Salin selepas log masuk

Selepas pengubahsuaian ini, kita boleh berjaya menyusun. dan jalankan kod tanpa ralat "jenis penerima tidak sah".

Ringkasan:
Untuk menyelesaikan ralat "jenis penerima tidak sah 'x' ('x' bukan jenis yang ditentukan)" dalam golang, anda perlu menyemak sama ada jenis penerima dalam kod ditakrifkan dengan betul. Jika jenis penerima adalah jenis yang tidak ditentukan, ia perlu diubah suai kepada jenis yang ditentukan. Secara umum, menukar jenis penerima kepada penunjuk kepada jenis itu adalah penyelesaian biasa. Dengan menganalisis punca ralat dan membuat pengubahsuaian mengikut situasi sebenar, kita boleh menyelesaikan masalah ini dengan mudah.

Atas ialah kandungan terperinci Selesaikan ralat golang: jenis penerima tidak sah 'x' ('x' bukan jenis yang ditentukan), penyelesaian. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!