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
Susan Sarandonasal
2024-10-31 22:23:29216semak imbas

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>

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>

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

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!

Kenyataan:
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