golang支持吗

#define DEBUG 

#ifdef DEBUG 
  fmt.Println("Debug message..."); 
#endif 

这样我就可以构建一个运行时开销为零的调试版本了?

推荐答案

围棋没有预处理器或宏系统.您可以做的是传入标记以通过-tags标志进行构建,并使用构建约束.要做到这一点,您需要同一源代码的两个版本,并且根据标记是否存在,只有一个版本可以进行构建.

看看https://golang.org/pkg/go/build/中的构建约束

主_调试.go

// +build debug

package main

import (
    "fmt"
)

func main() {
    fmt.Println("Debug build")
}

main_release ase.go

// +build !debug

package main

import (
    "fmt"
)

func main() {
    fmt.Println("Release build")
}

Here go build would compile with main_release ase.go and go build -tags debug would compile with 主_调试.go

Go相关问答推荐

如何修复Go中调用GetRawInputDeviceInfA Windows API函数时的错误?

AWS S3 SelectObjectContent在AWS SDK v2 for Go中不返回结果

带有一个新变量的Go冒号等于运算符

错误&对象已被Golang在K8s操作符上修改

为什么要立即调用内联函数,而不仅仅是调用其包含的函数?

Go 中如何判断 struct 体是否包含另一个 struct 体?

testcontainers:如何修复绑定源路径不存在

无法在go中为docker容器写入有效的挂载路径

GORM中是否可能自动迁移具有循环关系的表?

hyperledger fabric - go:在 $PATH 中找不到可执行文件

为什么 net/http 不遵守超过 30 秒的超时持续时间?

如何测试光纤参数

在密钥不存在时处理 PATCH 部分更新

如何从 Go 中的 `HijackedResponse` 中删除 Cursor Position ANSI 转义码?

Golang 中的泛型类型转换

如何将一片 map 转换为一片具有不同属性的 struct

将shell输出绑定到Go中的 struct 的最佳方法?

函数的递归调用以 goroutine 和惯用方式开始,以在所有工作 goroutine 完成时继续调用者

为什么在 goroutine 中声明时,benbjohnson/clock 模拟计时器不执行?

手动下载并放置一个 golang mod 文件