日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

關于 Go 的高級構建指南

來源: 責編: 時間:2024-06-20 15:22:09 156觀看
導讀構建選項以下是 go build 命令最常用的一些選項:-o: 指定輸出文件名。默認輸出文件名是主軟件包的名稱,在 Windows 系統中會自動添加 .exe 后綴。-v: 詳細輸出。該選項會在編譯時打印軟件包的名稱。-work: 打印臨時工作

Gv628資訊網——每日最新資訊28at.com

構建選項

以下是 go build 命令最常用的一些選項:Gv628資訊網——每日最新資訊28at.com

  • -o: 指定輸出文件名。默認輸出文件名是主軟件包的名稱,在 Windows 系統中會自動添加 .exe 后綴。
  • -v: 詳細輸出。該選項會在編譯時打印軟件包的名稱。
  • -work: 打印臨時工作目錄,退出時不刪除。該選項對調試很有用。
  • -x: 打印指令。該選項可打印 go build 正在執行的指令。
  • -asmflags: 傳遞給 go tool asm 調用的參數。
  • -buildmode: 要使用的編譯模式。默認構建模式為 exe。其他可能的值包括shared、pie和plugin。
  • -buildvcs: 是否在二進制文件中加入版本控制信息。默認值為auto(自動)。

有關 go build 命令的更多信息,可以運行以下命令:Gv628資訊網——每日最新資訊28at.com

go help build

包含哪些文件

在 Go 中使用 go build 命令時,會編譯當前目錄及其子目錄中的 Go 源文件,以創建可執行的二進制文件。默認情況下只編譯 .go 文件,而忽略目錄中的其他文件類型。不過,值得注意的是,go build 命令的行為可能會受到構建標簽和構建約束的影響。Gv628資訊網——每日最新資訊28at.com

go build 通常會忽略以下類型的文件:Gv628資訊網——每日最新資訊28at.com

(1) 擴展名不是 .go 的文件:Gv628資訊網——每日最新資訊28at.com

目錄中任何沒有 .go 擴展名的文件都將被忽略,包括文本文件、配置文件、圖片等。Gv628資訊網——每日最新資訊28at.com

(2) 子目錄中的文件:Gv628資訊網——每日最新資訊28at.com

go build 命令編譯當前目錄及其子目錄中所有 .go 文件,其他文件和目錄通常會被忽略。Gv628資訊網——每日最新資訊28at.com

(3) 以下劃線或點號開頭的文件:Gv628資訊網——每日最新資訊28at.com

go 工具會忽略以 . 或 _ 開頭的目錄和文件名,以及名為 testdata 的目錄。Gv628資訊網——每日最新資訊28at.com

(4) 被構建約束排除的文件:Gv628資訊網——每日最新資訊28at.com

Go 支持構建約束,允許根據目標操作系統或體系架構等條件,構建過程中包含或排除特定文件。例如,在為非 Windows 平臺構建時,帶有 //go:build windows 等構建約束的文件將被忽略。Gv628資訊網——每日最新資訊28at.com

(5) 通過構建標簽排除的文件:Gv628資訊網——每日最新資訊28at.com

構建標簽是 Go 源文件中的特殊注釋,可用于根據自定義條件指定哪些文件應包含在編譯中。如果文件的構建標記與構建上下文不匹配,則會被忽略。Gv628資訊網——每日最新資訊28at.com

(6) "testdata"目錄中的文件:Gv628資訊網——每日最新資訊28at.com

testdata 的目錄中的文件將被忽略。該目錄通常用于包含與測試相關的數據,而這些數據并不需要編譯。Gv628資訊網——每日最新資訊28at.com

構建標簽

Go 的構建標簽提供了一種強大的機制,可在構建過程中包含或排除特定代碼。通過使用構建標簽,開發人員可以定制自己的應用程序,使其適用于不同的構建配置、環境或特定平臺要求。這一功能在處理交叉編譯或為特定操作系統創建二進制文件時尤為重要。Gv628資訊網——每日最新資訊28at.com

構建標簽是放在 Go 源文件開頭的注釋,指定了一組條件,標識在這些條件下,該文件中的代碼應被包含或排除在聯編過程之外。語法是 //go:build 。例如,考慮這樣一種情況:只有在為應用程序的某個版本構建時,才會包含一段特定的代碼:Gv628資訊網——每日最新資訊28at.com

main.goGv628資訊網——每日最新資訊28at.com

package mainimport "fmt"var version stringfunc main() {    fmt.Println(version)}

pro.goGv628資訊網——每日最新資訊28at.com

//go:build propackage mainfunc init() {    version = "pro"}

free.goGv628資訊網——每日最新資訊28at.com

//go:build freepackage mainfunc init() {    version = "free"}

當使用 -tags=free 時,輸出將是 free,因為 free.go 文件已包含在內。而使用 -tags=pro 時,輸出將是 pro。Gv628資訊網——每日最新資訊28at.com

構建標簽語法

可以像使用編程中的其他條件語句一樣組合約束條件,如 AND、OR、NOT。Gv628資訊網——每日最新資訊28at.com

NOT:Gv628資訊網——每日最新資訊28at.com

//go:build !cgo

只有在未啟用 CGO 的情況下,才會在構建過程中包含該文件。Gv628資訊網——每日最新資訊28at.com

AND:Gv628資訊網——每日最新資訊28at.com

//go:build cgo && darwin

只有啟用 CGO 并且 GOOS 設置為 darwin 的情況下,才會在構建過程中包含該文件。Gv628資訊網——每日最新資訊28at.com

OR:Gv628資訊網——每日最新資訊28at.com

//go:build darwin || linux

組合使用:Gv628資訊網——每日最新資訊28at.com

//go:build (linux || 386) && (darwin || !cgo)

注意:1.16 及更早版本的 Go 使用了不同的構建約束語法,前綴為 // +build。當遇到舊語法時,gofmt 命令將添加等效的 //go:build 約束。Gv628資訊網——每日最新資訊28at.com

構建約束

除了使用構建參數設置自定義構建標簽,golang 也會根據環境變量和其他因素自動設置一些標簽。以下是可用標記的列表:Gv628資訊網——每日最新資訊28at.com

(1) GOOS 和 GOARCH 環境變量Gv628資訊網——每日最新資訊28at.com

可以在源代碼中設置限制條件,只有在使用了特定 GOOS 或 GOARCH 時才能運行文件,例如:Gv628資訊網——每日最新資訊28at.com

//go:build darwin,amd64package utils

(2) GO 版本限制Gv628資訊網——每日最新資訊28at.com

可以根據構建整個模塊時使用的 go 版本來約束是否包含文件。例如,要只在使用 go 版本為 1.12 及以上時構建文件,可以使用 //go:build go1.18。如果 go 的版本是 1.18 或 1.21(截至本文撰寫時的最新版本),則會包含該文件。Gv628資訊網——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-95158-0.html關于 Go 的高級構建指南

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: C# 中的占位符替換五種方式

下一篇: C#中Attribute的魅力:從基礎到高級AOP實戰

標簽:
  • 熱門焦點
  • Raft算法:保障分布式系統共識的穩健之道

    1. 什么是Raft算法?Raft 是英文”Reliable、Replicated、Redundant、And Fault-Tolerant”(“可靠、可復制、可冗余、可容錯”)的首字母縮寫。Raft算法是一種用于在分布式系統
  • 得物效率前端微應用推進過程與思考

    一、背景效率工程隨著業務的發展,組織規模的擴大,越來越多的企業開始意識到協作效率對于企業團隊的重要性,甚至是決定其在某個行業競爭中突圍的關鍵,是企業長久生存的根本。得物
  • 一文搞定Java NIO,以及各種奇葩流

    大家好,我是哪吒。很多朋友問我,如何才能學好IO流,對各種流的概念,云里霧里的,不求甚解。用到的時候,現百度,功能雖然實現了,但是為什么用這個?不知道。更別說效率問題了~下次再遇到,
  • 最“俊美”淘寶賣家,靠直播和短視頻圈粉,上架秒光,年銷3000萬

    來源 | 電商在線文|易琬玉編輯|斯問受訪店鋪:Ringdoll戒之人形圖源:微博@御座的黃山、“Ringdoll戒之人形”淘寶店鋪有關外貌的評價,黃山已經聽累了。生于1985年的他,哪
  • 消費結構調整丨巨頭低價博弈,拼多多還卷得動嗎?

    來源:征探財經作者:陳香羽隨著流量紅利的退潮,電商的存量博弈越來越明顯。曾經主攻中高端與品質的淘寶天貓、京東重拾“低價”口號。而過去與他們錯位競爭的拼多多,靠
  • 大廠卷向扁平化

    來源:新熵作者丨南枝 編輯丨月見大廠職級不香了。俗話說,兵無常勢,水無常形,互聯網企業調整職級體系并不稀奇。7月13日,淘寶天貓集團啟動了近年來最大的人力制度改革,目前已形成一
  • 小米公益基金會捐贈2500萬元馳援北京、河北暴雨救災

    8月2日消息,今日小米科技創始人雷軍在其微博上發布消息稱,小米公益基金會宣布捐贈2500萬元馳援北京、河北暴雨救災。攜手抗災,京冀安康!以下為公告原文
  • OPPO、vivo、小米等國內廠商Q2在印度智能手機市場份額依舊高達55%

    7月20日消息,據外媒報道,研究機構的報告顯示,在全球智能手機出貨量同比仍在下滑的大背景下,印度這一有潛力的市場也未能幸免,出貨量同比也有下滑,多家廠
  • Android 14發布:首批適配機型公布

    5月11日消息,谷歌在今天凌晨舉行了I/O大會,本次發布會谷歌帶來了自家的AI語言模型PaLM 2、谷歌Pixel Fold折疊屏、谷歌Pixel 7a手機,同時發布了Androi
Top 主站蜘蛛池模板: 田东县| 莆田市| 浦县| 博野县| 含山县| 马山县| 五大连池市| 焦作市| 花莲市| 常熟市| 凌源市| 淮北市| 沿河| 崇州市| 青田县| 马龙县| 株洲县| 汕头市| 盐池县| 澎湖县| 肃南| 定兴县| 稻城县| 永寿县| 交口县| 六盘水市| 北川| 乐亭县| 全椒县| 北海市| 邵东县| 奎屯市| 杂多县| 成武县| 昔阳县| 高安市| 兰州市| 德化县| 水城县| 安龙县| 怀安县|