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

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

編譯應用程序時可以要求最低 Go 版本嗎?

編譯應用程序時可以要求最低 Go 版本嗎?

Go
飲歌長嘯 2022-07-18 16:05:26
我想確保人們在編譯我的應用程序時沒有使用 Go 1.12 或更早版本;主要是因為這個:return fmt.Errorf("foo: %w", err)將在 Go 1.12 中編譯良好,但實際上不會像預期的那樣運行,因為它需要在 Go 1.13 或更新版本中進行運行時更改才能接受%w.即使有一些更改會引入編譯錯誤,例如二進制文字或_數字文字,更好的“你需要 Go 1.13 或更新版本”的消息會更好,更少混淆,因為不是每個人都熟悉 Go 并且知道什么與語法錯誤有關(似乎有些人仍在使用相當舊的 Go 版本)。我添加go 1.13到我的go.mod文件中,但我仍然可以使用舊版本很好地編譯它(并且go 1.16使用 Go 1.15 添加和編譯也可以)。有沒有辦法在編譯應用程序時要求最低 Go 版本以防止運行時錯誤并顯示友好的錯誤消息?
查看完整描述

1 回答

?
胡子哥哥

TA貢獻1825條經驗 獲得超6個贊

我能想到的最簡單的方法是添加一個新文件+build !go1.13;由于為所有較新版本添加了 Go 版本構建標簽(Go 1.14 有go1.14、go1.13、go1.12等),因此它將僅針對 Go 1.13 之前的版本進行編譯,并且對于任何較新的版本都將被忽略:


// +build !go1.13


package main


func init() {

    "You need Go 1.13 or newer to compile this program"

}

這引入了一個故意的編譯錯誤,這會導致一個相當不錯的錯誤消息:


$ go install ./cmd/app

# zgo.at/app/cmd/app

cmd/app/old.go:8:2: "You need Go 1.13 or newer to compile this program" evaluated but not used


查看完整回答
反對 回復 2022-07-18
  • 1 回答
  • 0 關注
  • 100 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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