n°达达的主页1234n.com个人博客 / 旧文存档
← 返回文章
2012-09-12 / 达达

Go语言条件编译脚本

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 **/

原标签已从 2013-07-27 存档快照 恢复。本文按原站快照恢复排版,并接回已核实的本地图片。查看恢复说明