5
不golang支持C風格的條件編譯
#define DEBUG
#ifdef DEBUG
fmt.Println("Debug message...");
#endif
所以我可以建立零運行時開銷的調試版本?
不golang支持C風格的條件編譯
#define DEBUG
#ifdef DEBUG
fmt.Println("Debug message...");
#endif
所以我可以建立零運行時開銷的調試版本?
Go沒有預處理器或宏系統。你可以做的是傳遞標籤去建立-tags
標誌並使用構建約束。要做到這一點,你需要兩個版本的相同來源,只有一個版本取決於標籤是否存在。
在https://golang.org/pkg/go/build/
main_debug.go
// +build debug
package main
import (
"fmt"
)
func main() {
fmt.Println("Debug build")
}
main_release.go看構建約束
// +build !debug
package main
import (
"fmt"
)
func main() {
fmt.Println("Release build")
}
這裏go build
將編譯main_release.go和go build -tags debug
將與main_debug.go編譯
看來這是目前的最佳做法... –
嚴格sp奧肯沒有。沒有預處理器,因此沒有預處理器魔法。 – lofcek
像Java一樣,GoLang中沒有任何嵌入式預處理器,但是也可以像Java那樣使用第三方類似的工具。例如我使用[Java評論預處理器+ mvn-golang](https://github.com/raydac/mvn-golang/tree/master/mvn-golang-examples/mvn-golang-examples-preprocessing),它使得很好結果 –