欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

一、go build -tags用法?

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

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

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

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

配合第三方庫“條件依賴”:只編譯指定庫的代碼
代碼里引了兩個(gè)數(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"

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

多標(biāo)簽批量生效:一次傳多個(gè)標(biāo)簽,匹配“任意一個(gè)”或“組合條件”
命令:go build -tags "prod linux amd64"(會(huì)包含: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 這兩個(gè)命令本身的行為差異,而非 -tags 的用法。

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

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

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

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

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

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

總結(jié)

  • 若想臨時(shí)編譯一個(gè)可執(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 生成定單號的操作

    golang 生成定單號的操作

    這篇文章主要介紹了golang 生成定單號的操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • Golang使用Gin框架實(shí)現(xiàn)http分塊傳輸

    Golang使用Gin框架實(shí)現(xiàn)http分塊傳輸

    這篇文章主要為大家詳細(xì)介紹了Golang中如何使用Gin框架實(shí)現(xiàn)http分塊傳輸功能,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,需要的可以參考一下
    2023-05-05
  • Go語言多值替換的HTML模板實(shí)例分析

    Go語言多值替換的HTML模板實(shí)例分析

    這篇文章主要介紹了Go語言多值替換的HTML模板,實(shí)例分析了Go語言多值替換與數(shù)組迭代的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-02-02
  • Go語言中的變量和常量

    Go語言中的變量和常量

    這篇文章介紹了Go語言中的變量和常量,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • go語言中匿名函數(shù)的作用域陷阱詳解

    go語言中匿名函數(shù)的作用域陷阱詳解

    GO語言的匿名函數(shù)(anonymous?function),其實(shí)就是閉包.是指不需要定義函數(shù)名的一種函數(shù)實(shí)現(xiàn)方式,下面這篇文章主要給大家介紹了關(guān)于go語言中匿名函數(shù)作用域陷阱的相關(guān)資料,需要的朋友可以參考下
    2022-05-05
  • 使用Golang進(jìn)行比較版本號大小

    使用Golang進(jìn)行比較版本號大小

    在日常開發(fā)中,比較版本號大小的情況是經(jīng)常遇到的,這篇文章主要為大家詳細(xì)介紹了如何使用Golang進(jìn)行比較版本號大小,需要的小伙伴可以參考下
    2024-01-01
  • Golang?中反射的應(yīng)用實(shí)例詳解

    Golang?中反射的應(yīng)用實(shí)例詳解

    這篇文章主要為大家介紹了Golang?中反射的應(yīng)用實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • 一文掌握Go語言并發(fā)編程必備的Mutex互斥鎖

    一文掌握Go語言并發(fā)編程必備的Mutex互斥鎖

    Go 語言提供了 sync 包,其中包括 Mutex 互斥鎖、RWMutex 讀寫鎖等同步機(jī)制,本篇博客將著重介紹 Mutex 互斥鎖的基本原理,需要的可以參考一下
    2023-04-04
  • Golang如何實(shí)現(xiàn)任意進(jìn)制轉(zhuǎn)換的方法示例

    Golang如何實(shí)現(xiàn)任意進(jìn)制轉(zhuǎn)換的方法示例

    進(jìn)制轉(zhuǎn)換是人們利用符號來計(jì)數(shù)的方法,進(jìn)制轉(zhuǎn)換由一組數(shù)碼符號和兩個(gè)基本因素“基數(shù)”與“位權(quán)”構(gòu)成,這篇文章主要給大家介紹了關(guān)于Golang如何實(shí)現(xiàn)10進(jìn)制轉(zhuǎn)換62進(jìn)制的方法,文中給出了詳細(xì)的示例代碼供大家參考學(xué)習(xí)學(xué)習(xí),下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-09-09
  • golang channel讀取數(shù)據(jù)的幾種情況

    golang channel讀取數(shù)據(jù)的幾種情況

    本文主要介紹了golang channel讀取數(shù)據(jù)的幾種情況,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02

最新評論