有什么方法可以检查Go程序是否-race在运行时启用了编译功能(例如,用于日志记录/信息目的)?
-race
我检查了文档以及明显的位置(runtime/*),但找不到任何东西。
runtime/*
据我所知,没有对此的简单检查,但是-race启用了race build标签后,您就可以利用它了。
race
我创建了一个新目录israce,并在其中放置了两个文件:
israce
israce/race.go:
israce/race.go
// +build race // Package israce reports if the Go race detector is enabled. package israce // Enabled reports if the race detector is enabled. const Enabled = true
israce/norace.go:
israce/norace.go
// +build !race // Package israce reports if the Go race detector is enabled. package israce // Enabled reports if the race detector is enabled. const Enabled = false
由于使用了build标签,将仅编译两个文件之一。
这也是围棋标准库是怎么做的(race.go,norace.go),但由于这是一个内部包不能导入的围棋源基地之外。
race.go
norace.go