Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Mencetak Set Kaedah Antara Muka di Golang?

Bagaimana untuk Mencetak Set Kaedah Antara Muka di Golang?

Susan Sarandon
Lepaskan: 2024-10-31 22:23:29
asal
220 orang telah melayarinya

How to Print the Method Set of an Interface in Golang?

Mengakses Set Kaedah Antara Muka di Golang

Menentukan kaedah dalam antara muka boleh berguna untuk pelbagai senario. Artikel ini meneroka cara mencetak set kaedah antara muka dalam Golang dengan berkesan.

Cabaran

Memandangkan antara muka berikut:

<code class="go">type Searcher interface {
    Search(query string) (found bool, err error)
    ListSearches() []string
    ClearSearches() (err error)
}</code>
Salin selepas log masuk

Bagaimana bolehkah kita mencetak nama kaedah ini (Search, ListSearches dan ClearSearches) tanpa pengetahuan awal tentang jenis konkrit yang melaksanakan antara muka?

Penyelesaian

Pakej reflect menyediakan cara untuk memeriksa jenis semasa runtime. Dengan memanfaatkan pakej ini, kami boleh mendapatkan semula maklumat jenis antara muka kami dan memeriksa kaedahnya.

<code class="go">package main

import (
    "fmt"
    "reflect"
)

type Searcher interface {
    Search(query string) (found bool, err error)
    ListSearches() []string
    ClearSearches() (err error)
}

func main() {
    t := reflect.TypeOf(struct{ Searcher }{})
    for i := 0; i < t.NumMethod(); i++ {
        fmt.Println(t.Method(i).Name)
    }
}</code>
Salin selepas log masuk

Kod ini mencapai matlamat kami dengan mencerminkan jenis antara muka dan mengulangi kaedahnya untuk mencetak nama mereka.

Output

Menjalankan program ini akan menghasilkan output yang diingini:

Search
ListSearches
ClearSearches
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Mencetak Set Kaedah Antara Muka di Golang?. 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