Kaedah Lambakan Struktur di Golang
Walaupun pakej "fmt" Golang menyediakan kaedah "Printf" untuk membuang sifat struct, terdapat perlu mendapatkan kedua-dua sifat dan kaedah struct. Pertimbangkan contoh berikut:
type Foo struct { Prop string } func (f Foo)Bar() string { return f.Prop }
Untuk menyemak kewujudan kaedah "Bar()" dalam contoh yang dimulakan jenis "Foo," pertimbangkan untuk menggunakan pakej "reflect". Beginilah cara anda melakukannya:
fooType := reflect.TypeOf(&Foo{}) for i := 0; i < fooType.NumMethod(); i++ { method := fooType.Method(i) fmt.Println(method.Name) }
Jika matlamat anda adalah untuk menentukan sama ada sesuatu jenis melaksanakan set kaedah tertentu, antara muka dan penegasan jenis mungkin lebih mudah. Contoh:
func implementsBar(v interface{}) bool { type Barer interface { Bar() string } _, ok := v.(Barer) return ok }
Untuk menguji contoh "Foo" bagi kaedah "Bar()":
fmt.Println("Foo implements the Bar method:", implementsBar(Foo{}))
Sebagai alternatif, untuk menegaskan secara eksplisit bahawa jenis mempunyai kaedah tertentu di masa menyusun:
var _ Barer = Foo{}
Atas ialah kandungan terperinci Bagaimanakah saya boleh membuang kedua-dua Sifat dan Kaedah Go Struct?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!