Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Menyenaraikan Kaedah Awam Pakej Go?

Bagaimana untuk Menyenaraikan Kaedah Awam Pakej Go?

Barbara Streisand
Lepaskan: 2024-12-06 12:13:14
asal
425 orang telah melayarinya

How to List Public Methods of a Go Package?

Menyenaraikan Kaedah Awam Pakej dalam Go

Soalan:

Bagaimana mungkin untuk menyenaraikan kaedah awam pakej dalam Go? Pertimbangkan struktur kod berikut:

main.go:

package main

func main() {
    // list public methods in here
}
Salin selepas log masuk

libs/method.go:

package libs

func Result1() {
    fmt.Println("method Result1")
}

func Result2() {
    fmt.Println("method Result2")
}
Salin selepas log masuk

Jawapan:

Malangnya, Go kekurangan ciri langsung untuk permintaan ini. Apabila pakej diimport, pengkompil boleh mengalih keluar kaedah yang tidak digunakan semasa pengoptimuman. Oleh itu, pengimportan pakej semata-mata tidak menjamin kehadiran semua kaedah.

Alternatif:

Analisis Statik:

Anda boleh menghuraikan kod sumber pakej dan mengekstrak pengisytiharan fungsi menggunakan perpustakaan pantulan Go. Pertimbangkan contoh berikut:

import (
    "fmt"
    "go/parser"
    "go/token"
)

func main() {
    fileset := token.NewFileSet()
    packages, err := parser.ParseDir(fileset, "./libs", nil, 0)
    if err != nil {
        fmt.Println("Parsing failed:", err)
        return
    }

    methods := []string{}
    for _, p := range packages {
        // Get all methods in each source file.
        for _, f := range p.Files {
            for _, dec := range f.Decls {
                if fn, ok := dec.(*parser.FuncDecl); ok && fn.Name.IsExported() {
                    methods = append(methods, fn.Name.String())
                }
            }
        }
    }

    fmt.Println("Exported methods in package 'libs':", methods)
}
Salin selepas log masuk

Nota: Pendekatan ini hanya menyediakan pengisytiharan fungsi, bukan pelaksanaannya.

Refleksi Dinamik:

Sebagai alternatif, anda boleh menggunakan pakej mencerminkan Go pada masa jalan untuk memeriksa kaedah sesuatu nilai. Walau bagaimanapun, ini memerlukan contoh yang dimulakan bagi jenis yang dimaksudkan.

Ingat bahawa pendekatan ini mempunyai had dan mungkin tidak sesuai untuk semua kes penggunaan.

Atas ialah kandungan terperinci Bagaimana untuk Menyenaraikan Kaedah Awam Pakej Go?. 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