英文:
Does there exists something like Macros in Golang for debugging
问题
在Go语言中,没有像C/C++中的宏那样的机制。但是,你可以使用条件编译和构建标记来实现类似的效果。在调试阶段,你可以使用构建标记来启用调试信息的打印,而在正式发布时,可以禁用这些构建标记,以便调试信息不会被编译和打印出来。下面是一个示例:
func demo() {
// ...
// 在调试阶段,下面的代码会被编译并打印调试信息
#ifdef DEBUG
printMyDebugInfo(variable)
#endif
// ...
}
请注意,Go语言中没有预处理器,因此不能像C/C++那样直接使用宏。但是,通过使用构建标记和条件编译,你可以实现类似的效果。
英文:
Does there exist also something like macros of C/C++ in golang so that in debug phase, developers are allowed to print some additional debug information? And in the official release, just set these macros to false so that they will not be compiled and no extra information will be printed. Here is a snippet to illustrate what I mean.
func demo() {
// ...
// the following line will not be compiled in release only in debug phase
printMyDebugInfo(variable)
// ...
}
答案1
得分: 3
最接近的方法可能是定义一个具有两个版本的调试打印函数。
一个用于调试模式:
//go:build debug
package whatever
func debugPrint(in string) {
print(in)
}
一个用于生产环境:
//go:build !debug
package whatever
func debugPrint(in string) {}
当你想使用调试版本时,使用go build -tags debug
。
英文:
The closest is probably to define a debug print function in two versions.
One for debug mode:
//go:build debug
package whatever
func debugPrint(in string) {
print(in)
}
One for production:
//go:build !debug
package whatever
func debugPrint(in string) {}
Then use go build -tags debug
when you want to use the debug version.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论