为了账号安全,请及时绑定邮箱和手机立即绑定

Golang如何获取当前源文件的最新编译时间和日期?

Golang如何获取当前源文件的最新编译时间和日期?

Go
呼啦一阵风 2022-01-10 16:22:03
此代码返回当前源文件的最新编译时间和日期:package main/*#include<stdint.h>#include<string.h>void getCompileDateTime(uint8_t  dt[12],uint8_t tm[9]){  strcpy(dt, __DATE__); //Mmm dd yyyy  strcpy(tm,__TIME__);  //hh:mm:ss}*/import "C"import (    "fmt"    "unsafe")func main() {    dt := make([]byte, 12)    tm := make([]byte, 10)    C.getCompileDateTime((*C.uint8_t)(unsafe.Pointer(&dt[0])), (*C.uint8_t)(unsafe.Pointer(&tm[0])))    dts, tms := string(dt), string(tm)    fmt.Println(dts, tms)}是否有纯粹的 Golang 方法或者这是唯一的方法?
查看完整描述

3 回答

?
Helenr

TA贡献1780条经验 获得超4个赞

找到了另一种使用go 链接器上的选项来分配字符串的方法:


-X 导入路径名=值


将 importpath 中名为 name 的字符串变量的值设置为 value。请注意,在 Go 1.5 之前,此选项采用两个单独的参数。现在它需要在第一个 = 符号上拆分一个参数。


代码示例:


package main


import "fmt"


var compileDate string


func main() {

   fmt.Println(compileDate )

}

搭建时:


go build -ldflags "-X main.compileDate=`date -u +.%Y%m%d.%H%M%S`" main.go

这种方法的优点是,它可以通过构建脚本更加独立于操作系统,而不会乱扔代码 go:generate


查看完整回答
反对 回复 2022-01-10
?
猛跑小猪

TA贡献1858条经验 获得超8个赞

使用 go:generate。作为构建过程的一部分,您必须在运行go generate程序之前运行。您可以将其封装在共享函数中以跨文件使用。


package main


import (

    "fmt"

    "io/ioutil"

    "strconv"

    "time"

    "strings"

)


//go:generate sh -c "date +'%s' > main_timestamp.go.txt"


func main() {

    txt, err := ioutil.ReadFile("main_timestamp.go.txt")

    if err == nil {

        i, err := strconv.ParseInt(strings.TrimSpace(string(txt)), 10, 64)

        if err == nil {

            t := time.Unix(i, 0)

            fmt.Printf("%s", t)

        } else {

            fmt.Printf("error parsing file %s", err)

        }

    } else {

        fmt.Printf("error reading file %s", err)

    }

}


查看完整回答
反对 回复 2022-01-10
?
慕虎7371278

TA贡献1802条经验 获得超4个赞

在开发期间几乎相同的不是编译时间,而是可执行修改时间。当然,复制可执行文件时它可能会出错,但它可能对某人有帮助:


package main


import (

    "fmt"

    "os"

)


var (

    linkTime string

)


func main() {

    fi, _ := os.Stat(os.Args[0])

    linkTime = fi.ModTime().String()

    fmt.Println(linkTime)

}


查看完整回答
反对 回复 2022-01-10
  • 3 回答
  • 0 关注
  • 160 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信