Kaedah struktur Golang menerima pelbagai jenis parameter

王林
Lepaskan: 2024-02-10 23:30:10
ke hadapan
1086 orang telah melayarinya

Kaedah struktur Golang menerima pelbagai jenis parameter

Editor PHP Apple hari ini akan memperkenalkan kepada anda kaedah struktur dalam Golang Kaedah ini boleh menerima pelbagai jenis parameter. Golang ialah bahasa pengaturcaraan taip statik sumber terbuka yang menyokong gaya pengaturcaraan berorientasikan objek dan menyediakan struktur sebagai jenis data. Kaedah struktur ialah fungsi khas yang boleh mengendalikan dan mengubah suai struktur. Tidak seperti bahasa lain, kaedah struktur Golang boleh menerima pelbagai jenis parameter, yang membawa lebih fleksibiliti dan kemudahan kepada pembangun. Mari kita lihat lebih dekat ciri ini.

Kandungan soalan

Kaedah saya adalah seperti berikut:

func (t *worker) updateinfo(n structtype1, node structtype2)
Salin selepas log masuk

Namun, sekarang saya perlu menggunakan api ini untuk mengendalikan structtype1 dan structtype3. Ini bermakna n boleh menjadi structtype3.

Bagaimana saya boleh mengubah suai kaedah untuk mencapai ini dan bukannya menulis kaedah lain seperti di bawah dan mengulangi kod yang sama?

func (t *Worker) updateInfo(n structType3, node structType2)
Salin selepas log masuk

Sunting: Semua struktur ini adalah struktur tersuai saya sendiri

Penyelesaian

Dalam kes ini, anda boleh menggunakan generik.

Sebagai contoh, anggap kaedah structtype1structtype2 有一个名为 print.

type  structtype1 struct {}
func(st1 structtype1) print() {
 fmt.println("calling print function of structtype1")
}

type  structtype3 struct {}
func(st3 structtype3) print() {
 fmt.println("calling print function of structtype2")
}
Salin selepas log masuk

Kami boleh menentukan pengisytiharan jenis antara muka seperti yang ditunjukkan di bawah.

type struct13 interface {
 print()
 structtype1 | structtype3 // type union 
}

Salin selepas log masuk

Anda kemudiannya perlu mengubah suai fungsi worker 结构体和 updateinfo 函数。 (注:struct13 中的 print dengan parameter jenis untuk tujuan demonstrasi. )

type worker[t struct13] struct{}

func (t *worker[t]) updateinfo(n t, node structtype2) {
 n.print()
}
Salin selepas log masuk

Kita boleh menggunakan pelaksanaan di atas seperti yang ditunjukkan di bawah.

    st1 := structType1{}
    st2 := structType2{}
    st3 := structType3{}


    w1 := Worker[structType1]{}
    w1.updateInfo(st1,st2)

    w2 := Worker[structType3]{}
    w2.updateInfo(st3,st2)
Salin selepas log masuk

Atas ialah kandungan terperinci Kaedah struktur Golang menerima pelbagai jenis parameter. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:stackoverflow.com
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!