在程序發佈之後,經常需要識別程序的版本號,來確定一些問題是否因爲程序未更新造成的,其中通過在程序啓動日誌中輸出編譯時間是最有效方法。
在golang中沒有C語言__FILE__,__LINE__,__DATE__,__TIME__這些好用的編譯期常量給我們使用,好在golang提供了強大的cgo在go代碼中嵌入C代碼的方法,可以實現這個需求。
廢話不多說,直接上代碼:
package main
/#
const char* build_time(void)
{
static const char* psz_build_time = "["__DATE__ " " __TIME__ "]";
return psz_build_time;
}
#/
import "C"
import (
"fmt"
)
var (
buildTime = C.GoString(C.build_time())
)
func BuildTime() string {
return buildTime
}
func main() {
fmt.Printf("Build time is: %s\n", BuildTime())
}
//Output:
//Build time is: [Jan 2 2014 23:02:20]