亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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 之前,此選項采用兩個單獨的參數?,F在它需要在第一個 = 符號上拆分一個參數。


代碼示例:


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 關注
  • 195 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號