Rumah > pembangunan bahagian belakang > Golang > Bagaimanakah saya boleh membuang kedua-dua Sifat dan Kaedah Go Struct?

Bagaimanakah saya boleh membuang kedua-dua Sifat dan Kaedah Go Struct?

Barbara Streisand
Lepaskan: 2024-12-30 19:18:15
asal
216 orang telah melayarinya

How Can I Dump Both Properties and Methods of a Go Struct?

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
}
Salin selepas log masuk

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)
}
Salin selepas log masuk

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
}
Salin selepas log masuk

Untuk menguji contoh "Foo" bagi kaedah "Bar()":

fmt.Println("Foo implements the Bar method:", implementsBar(Foo{}))
Salin selepas log masuk

Sebagai alternatif, untuk menegaskan secara eksplisit bahawa jenis mempunyai kaedah tertentu di masa menyusun:

var _ Barer = Foo{}
Salin selepas log masuk

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!

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