有时候一些代码逻辑只想在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 **/
原标签已从 2013-07-27 存档快照 恢复。本文按原站快照恢复排版,并接回已核实的本地图片。查看恢复说明