Rumah > pembangunan bahagian belakang > Golang > Mengapa Saya Mendapat Ralat Semasa Memanggil Kaedah pada Penunjuk Antara Muka dalam Go?

Mengapa Saya Mendapat Ralat Semasa Memanggil Kaedah pada Penunjuk Antara Muka dalam Go?

Mary-Kate Olsen
Lepaskan: 2024-12-08 22:50:11
asal
1039 orang telah melayarinya

Why Do I Get Errors When Calling Methods on Interface Pointers in Go?

Kaedah Memanggil pada Penunjuk Antara Muka dalam Go

Apabila bekerja dengan perpustakaan Gorp untuk akses pangkalan data, yang menawarkan kedua-dua jenis DbMap dan jenis Transaksi, anda mungkin menghadapi perlu memanggil kaedah pada penunjuk antara muka. Perkara ini boleh timbul apabila anda perlu melakukan pemulangan semula semasa menggunakan transaksi.

Untuk menyelesaikan isu yang dihadapi dalam sampel kod, adalah penting untuk memahami bahawa menghantar penuding kepada antara muka adalah tidak diperlukan dalam Go. Tidak seperti bahasa lain, Go tidak menggunakan panggilan melalui rujukan. Sebaliknya, menghantar penuding hanya diperlukan apabila anda perlu mengubah suai nilai asal dalam fungsi, yang biasanya tidak berlaku untuk nilai antara muka.

Masalahnya возникает kerana kaedah Dapatkan antara muka gorp.SqlExecutor mengambil masa nilai penunjuk sebagai parameter pertamanya. Walau bagaimanapun, struktur repositori anda cuba untuk memberikan nilai bukan penuding (*gorp.SqlExecutor) kepada parameter ini, menyebabkan mesej ralat.

Cara yang betul untuk menyelesaikan isu ini ialah menggunakan penuding kepada nilai antara muka secara langsung dalam panggilan kaedah. Berikut ialah kod yang diperbetulkan:

package repositories

import (
    "github.com/coopernurse/gorp"
)

type Repository struct {
    Gorp gorp.SqlExecutor
}

func (r *Repository) GetById(i interface{}, key interface{}) interface{} {
    obj, err := r.Gorp.Get(i, key)
    if err != nil {
        panic(err)
    }
    return obj
}
Salin selepas log masuk

Dengan menggunakan penuding ke antara muka secara terus, anda membenarkan kaedah Dapatkan untuk mengubah suai nilai asal, yang diperlukan untuk melancarkan urus niaga.

Atas ialah kandungan terperinci Mengapa Saya Mendapat Ralat Semasa Memanggil Kaedah pada Penunjuk Antara Muka dalam Go?. 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan