Go语言条件编译脚本
有时候一些代码逻辑只想在debug版中执行又不想加判断语句影响release版的性能,Go语言没有原生的条件编译语法,只好靠自己了。
今天用sed + grep做了一个简单的替换脚本,可以在发布程序的时候注释掉debug用的代码,完整代码如下:
#!/bin/sh sed -i "s/\/\*\* IF RELEASE/\/\*\* IF DEBUG \*\*\//g" `grep -rl "/\*\* IF RELEASE" * | grep -v svn` sed -i "s/END RELEASE \*\*\//\/\*\* END \*\*\//g" `grep -rl "END RELEASE \*\*/" * | grep -v svn`
从release版代码再变回debug版只需要把过程逆过来就可以,代码如下:
#!/bin/sh sed -i "s/\/\*\* IF DEBUG \*\*\//\/\*\* IF RELEASE/g" `grep -rl "/\*\* IF DEBUG \*\*/" * | grep -v svn` sed -i "s/\/\*\* END \*\*\//END RELEASE \*\*\//g" `grep -rl "/\*\* END \*\*/" * | grep -v svn`
在go代码中标注debug代码的示例:
/** IF DEBUG **/ import "fmt" import "time" /** END **/ /** IF DEBUG **/ t2 := time.Now().UnixNano() /** END **/