Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Kaedah struktur Golang menerima pelbagai jenis parameter

Kaedah struktur Golang menerima pelbagai jenis parameter

王林
王林ke hadapan
2024-02-10 23:30:101049semak imbas

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)

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)

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

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

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

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

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)

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

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam