最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

go build -tags的其他用法命令詳解

 更新時間:2025年10月22日 15:02:50   作者:絳洞花主敏明  
go build -tags和go install -tags中的-tags 參數(shù)功能完全一致(都是通過標(biāo)簽控制編譯哪些代碼),核心區(qū)別在于 go build 和 go install 這兩個命令本身的行為差異,而非 -tags的用法,本文介紹go build -tags的其他用法,感興趣的朋友跟隨小編一起看看吧

一、go build -tags用法?

1. 進(jìn)階邏輯用法(標(biāo)簽組合更靈活)

  • “與”邏輯:標(biāo)簽間用空格分隔,必須同時滿足才編譯
    代碼標(biāo)簽://go:build linux && amd64(僅Linux+64位系統(tǒng)生效)
    編譯命令:go build -tags "linux amd64"(必須同時傳兩個標(biāo)簽,才會包含這段代碼)
  • “非”邏輯:用!排除標(biāo)簽,匹配“不含該標(biāo)簽”的代碼
    代碼標(biāo)簽://go:build !windows(除Windows外所有系統(tǒng)生效)
    編譯命令:go build -tags "linux"(無需額外傳!windows,只要標(biāo)簽不是windows就會包含)

2. 關(guān)聯(lián)依賴/編譯細(xì)節(jié)的冷門實用用法

控制標(biāo)準(zhǔn)庫功能:通過標(biāo)簽啟用標(biāo)準(zhǔn)庫“隱藏功能”
例:go build -tags netgo(強制讓net庫用純Go實現(xiàn)的網(wǎng)絡(luò)協(xié)議,而非系統(tǒng)底層C實現(xiàn),避免跨平臺依賴問題)

配合第三方庫“條件依賴”:只編譯指定庫的代碼
代碼里引了兩個數(shù)據(jù)庫庫(mysql/redis),分別打標(biāo)簽:

//go:build use_mysql
import _ "github.com/go-sql-driver/mysql"
//go:build use_redis
import _ "github.com/redis/go-redis/v9"

編譯時只引mysql(不引redis):go build -tags use_mysql(自動排除redis依賴,減小程序體積)

多標(biāo)簽批量生效:一次傳多個標(biāo)簽,匹配“任意一個”或“組合條件”
命令:go build -tags "prod linux amd64"(會包含:prod標(biāo)簽代碼 + linux+amd64組合標(biāo)簽代碼 + 無標(biāo)簽代碼)

二、go build -tags和go install -tags有什么區(qū)別?

go build -tagsgo install -tags 中的 -tags 參數(shù)功能完全一致(都是通過標(biāo)簽控制編譯哪些代碼),核心區(qū)別在于 go buildgo install 這兩個命令本身的行為差異,而非 -tags 的用法。

1. 核心差異:命令本身的作用

維度go build -tags <標(biāo)簽>go install -tags <標(biāo)簽>
輸出位置默認(rèn)在當(dāng)前目錄生成可執(zhí)行文件(可通過 -o 指定路徑)固定安裝到 $GOPATH/bin$GOBIN 目錄(無需 -o,文件名固定為包名)
適用場景臨時編譯、本地測試(輸出文件留在項目內(nèi))安裝可執(zhí)行程序到系統(tǒng)可執(zhí)行路徑(方便全局調(diào)用,如工具類程序)
對模塊緩存的影響不影響,僅生成可執(zhí)行文件會將編譯結(jié)果緩存到模塊緩存($GOPATH/pkg/mod),加速后續(xù)安裝

2.-tags參數(shù)的一致性

兩者的 -tags 用法、邏輯(與/或/非)、對代碼的過濾規(guī)則完全相同。例如:

用標(biāo)簽區(qū)分 dev/prod 環(huán)境時:

# 本地編譯一個dev版本的可執(zhí)行文件(留在當(dāng)前目錄)
go build -tags dev -o myapp-dev
# 安裝prod版本到全局路徑(可直接在終端用myapp命令調(diào)用)
go install -tags prod

總結(jié)

  • 若想臨時編譯一個可執(zhí)行文件到當(dāng)前目錄(如測試),用 go build -tags <標(biāo)簽>;
  • 若想將程序安裝到全局路徑方便長期使用,用 go install -tags <標(biāo)簽>
  • 兩者的 -tags 作用完全一樣,僅命令的輸出位置和用途不同。

到此這篇關(guān)于go build -tags的其他用法的文章就介紹到這了,更多相關(guān)go build -tags用法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 深入理解GoLang并發(fā)與并行

    深入理解GoLang并發(fā)與并行

    本文主要介紹了GoLang并發(fā)與并行,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2026-03-03
  • golang連接mysql數(shù)據(jù)庫操作使用示例

    golang連接mysql數(shù)據(jù)庫操作使用示例

    這篇文章主要為大家介紹了golang連接mysql數(shù)據(jù)庫操作使用示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪
    2022-04-04
  • GoFrame?ORM原生方法操作示例

    GoFrame?ORM原生方法操作示例

    這篇文章主要為大家介紹了GoFrame?ORM原生方法操作示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • go中new和make的區(qū)別小結(jié)

    go中new和make的區(qū)別小結(jié)

    new 只分配內(nèi)存,make 用于初始化 slice、map 和 channel,本文詳細(xì)的介紹了go中new和make的區(qū)別小結(jié),感興趣的可以了解一下
    2023-05-05
  • 在Go語言中實現(xiàn)DDD領(lǐng)域驅(qū)動設(shè)計實例探究

    在Go語言中實現(xiàn)DDD領(lǐng)域驅(qū)動設(shè)計實例探究

    本文將詳細(xì)探討在Go項目中實現(xiàn)DDD的核心概念、實踐方法和實例代碼,包括定義領(lǐng)域模型、創(chuàng)建倉庫、實現(xiàn)服務(wù)層和應(yīng)用層,旨在提供一份全面的Go DDD實施指南
    2024-01-01
  • 一文詳解Go語言io.LimitedReader類型

    一文詳解Go語言io.LimitedReader類型

    這篇文章主要為大家介紹了Go語言io.LimitedReader類型示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07
  • Go語言中WaitGroup并發(fā)同步的實現(xiàn)

    Go語言中WaitGroup并發(fā)同步的實現(xiàn)

    本文主要介紹了Go語言中WaitGroup并發(fā)同步的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2026-04-04
  • Go歸并排序算法的實現(xiàn)方法

    Go歸并排序算法的實現(xiàn)方法

    歸并排序采用的也是分治的策略,把原本的問題先分解成一些小問題進(jìn)行求解,再把這些小問題各自的答案修整到一起得到原本問題的答案,從而達(dá)到分而治之的目的,對Go歸并排序算法相關(guān)知識感興趣的朋友一起看看吧
    2022-04-04
  • GO使用Mutex確保并發(fā)程序正確性詳解

    GO使用Mutex確保并發(fā)程序正確性詳解

    這篇文章主要為大家介紹了GO使用Mutex確保并發(fā)程序正確性詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • Go語言中init函數(shù)特點、用途和注意事項詳解

    Go語言中init函數(shù)特點、用途和注意事項詳解

    go語言中有一個非常神奇的函數(shù)init,它可以在所有程序執(zhí)行開始前被執(zhí)行,并且每個package下面可以存在多個init函數(shù),這篇文章主要給大家介紹了關(guān)于Go語言中init函數(shù)特點、用途和注意事項的相關(guān)資料,需要的朋友可以參考下
    2023-07-07

最新評論

隆德县| 汝城县| 青冈县| 怀安县| 专栏| 亳州市| 普兰店市| 鄂尔多斯市| 剑河县| 北京市| 河北区| 武定县| 云霄县| 平和县| 衢州市| 仁化县| 鄂温| 广德县| 密云县| 汾阳市| 进贤县| 临武县| 西丰县| 应城市| 会泽县| 子长县| 宁晋县| 韶关市| 民乐县| 青州市| 高要市| 岢岚县| 乐安县| 安达市| 尼勒克县| 霍林郭勒市| 嵩明县| 阿勒泰市| 威信县| 蒙山县| 香河县|