golang打印当前package name

本文介绍了一种在Golang中使用反射技术获取当前包名的方法,相较于通过runtime和路径操作来实现,此方法更为直接且优雅。通过定义一个空结构体并利用reflect.TypeOf()函数,可以轻松获取到包的完整路径。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有的时候需要在程序运行中打印当前package name,比如一些log系统,在每条log中希望打印出是在哪个pkg内(当然打印文件名也是可以的)。网上找了找,基本上也是先用runtime找到调用文件,然后通过path.Dir来找上级文件夹名,虽然也可以,但是总觉有点“取巧”。见:https://stackoverflow.com/questions/32163425/golang-how-to-get-the-directory-of-the-package-the-file-is-in-not-the-current-w

其实可以利用反射,见https://stackoverflow.com/questions/25262754/how-to-get-name-of-current-package-in-go

package myPkg
import (
    "fmt"
    "reflect"
)

func DumpMyName(){
    type em struct{}
    fmt.Println(reflect.TypeOf(em{}).PkgPath())
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值