登录
首页 >  Golang >  Go问答

在Go中如何创建无需导入即可全局访问的包?

来源:stackoverflow

时间:2024-03-22 17:54:29 141浏览 收藏

本文探讨了在 Go 中创建无需导入即可全局访问的包的方法。作者希望通过使记录器可全局访问来简化自定义日志记录包的使用,从而无需在需要记录消息的每个文件中导入该包。

问题内容

我在 go 中开发了一个自定义日志记录包,我将其称为 customlogger,提供不同日志级别(调试、信息、警告和错误)的日志记录功能。该包封装了标准 log.logger 的功能,还包括其他详细信息,例如函数名称、文件名和日志记录时的行号。

要在我的 go 项目中使用此日志记录包,我当前需要使用以下导入语句导入它:

import customlogger "logger/customlogger"

导入后,我可以使用该包记录消息,如下所示:

customlogger.logging().debug("custom debug message")
customlogger.logging().info("custom info message")
customlogger.logging().error("custom error message")

但是,我想通过使记录器可全局访问而无需透露其源代码来简化此包的使用。我的目标是像这样使用它:

Logging().Debug("Custom debug message")
Logging().Info("Custom info message")
Logging().Error("Custom error message")

有没有办法修改 customlogger 包来创建记录器的全局实例,使我能够直接使用记录器功能,而无需在我想要记录消息的每个文件中导入该包?

感谢您的专业知识和建议!


正确答案


不,但是您可以做的是摆脱每次调用 logging() 的麻烦。

在 customlogger 包中添加一些包装函数,基本上将其包装在其中。 这样你就可以调用 customlogger.error(message)

(一般建议包名小写)

示例:

package customlogger

... 

func Error(args ...any) {
    globallyDefinedLogger.Error(args...)
}

理论要掌握,实操不能落!以上关于《在Go中如何创建无需导入即可全局访问的包?》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>