成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Go1.21 速覽:支持自定義 go.env 文件,可惜還是有所殘缺

開發(fā) 前端
像以前最早時,有的同學(xué)是打開 ~/.zshrc,一番 vim 操作,設(shè)置好 export GO111MODULE=on。最后再 source 一下。

大家好,我是煎魚。

不知道大家平時在調(diào)整 Go 環(huán)境變量是怎么設(shè)置的呢,還是說都用默認配置,又或是直接走 IDE 設(shè)置?

Go 環(huán)境變量發(fā)展歷程

像以前最早時,有的同學(xué)是打開 ~/.zshrc,一番 vim 操作,設(shè)置好 export GO111MODULE=on。最后再 source 一下。雖然簡單,其實也是有好幾個步驟的:

$ vi ~/.zshrc
$ export GO111MODULE=on
$ source ~/.zshrc

到了近年,Go 支持使用 go env -w 去設(shè)置對應(yīng)的 Go 環(huán)境變量:

$ go env -w GO111MODULE=on

其默認寫入的路徑是:filepath.Join(os.UserConfigDir(), "go/env")。對應(yīng)不同的操作系統(tǒng):

  • MacOS:$HOME/Library/Application Support/go/env。
  • Linux:$HOME/.config/go/env。

經(jīng)過幾年演進,Go 環(huán)境變量的設(shè)置逐漸變得更方便。網(wǎng)上的教程、博客也紛紛改變了寫法。

這是截至目前的 Go 環(huán)境變量的歷程。

Go1.21 go.env 誕生

不太好的地方

大家會發(fā)現(xiàn),Go 現(xiàn)在的環(huán)境變量是越來越多了...如果都是用 go env -w 慢慢的就會越積累越多,配置也就變得復(fù)雜了起來。

另外較為棘手的還有不同的 Go 項目之間的所需配置可能不太一樣,產(chǎn)生交叉影響。也是一個影響點。

這讓我想起了 Python 以前沒有虛擬環(huán)境時的痛苦。Go 像是在 GO111MODULE 環(huán)境變量,會默認使用 auto 來規(guī)避這個問題。會相較之輕微許多。

無論是輕還是重,問題還是存在的。

引入改進措施

因此在 Go1.21 這個新版本起,將會以用戶設(shè)置的 $GOROOT/go.env 為更高優(yōu)先級,會覆蓋默認的設(shè)置。

既有的 GOPROXY、GOSUMDB 配置將會挪動到 go.env 文件中,文件內(nèi)容如下:

GOPROXY=https://proxy.golang.org,direct
GOSUMDB=sum.golang.org

GOTOOLCHAIN=auto
...

有了 go.env 文件后,后續(xù)就可以使用他來代替默認變量或手動設(shè)置的步驟了。

有些瑕疵點

目前 Go1.21 只是引入了 $GOROOT/go.env 這一個全局的 ENV 配置文件。看著也有些瑕疵。為什么?

一般來講要做完整,應(yīng)該要做到模塊(go.mod)的級別,也就是每個 Go 應(yīng)用有一個 go.env,這樣子才能夠完全的實現(xiàn)項目(模塊)級別的隔離。

但很可惜,Go 新版本這次把這個部分給暫時放棄了。因為每個模塊引入 go.env 會涉及太多的太多重大問題。

例如:

  • 為什么引入一個單獨的文件(go.env)而不是擴展 go.work?
  • 在模塊的 go.env 中是否允許所有的 Go 環(huán)境變量?
  • 是否有一個選項來禁用模塊的 go.env?或者這個新的 go.env 應(yīng)該被默認忽略?
  • GoEnv 的具體含義?
  • 需要一些工具?幫助用戶調(diào)試,告訴他們最終獲得的 Go 環(huán)境變量的過程和來自哪里,因為現(xiàn)在有太多的數(shù)據(jù)源了。
  • ...

相反引入 $GOROOT/go.env 會更加明確和沒什么爭議,畢竟還是局限于既有體系下的全局配置源的新增支持。

綜合來看,最后 Russ Cox 迅速躺平,取消了模塊(go.mod)級別的 go.env 支持。接受了此次提案的調(diào)整。

總結(jié)

各個編程語言的配置項和依賴管理一直是一大心魔,前有 Python3 使用 venv(虛擬環(huán)境)來解決。后有 Go,先是 godep,接著靠 Russ Cox 力排眾議推 Go modules(go.mod)來解決依賴管理。

接下來就是 Go 的配置項的逐步調(diào)整了,這個阻力相對于依賴管理小許多。相信不需要太久,各模塊很快就會允許有自己的 go.env 文件,來實現(xiàn)配置隔離。

大家可以持續(xù)關(guān)注!先從 $GOROOT/go.env 開始跟進。也可以加我下方微信,在 Go 技術(shù)交流群一起緊跟新技術(shù)知識。

責(zé)任編輯:武曉燕 來源: 腦子進煎魚了
相關(guān)推薦

2023-06-07 10:32:57

內(nèi)置函數(shù)clear

2023-06-29 08:47:59

GoContext設(shè)置

2023-05-05 08:51:18

Go語言泛型

2023-07-05 08:47:24

Go版本團隊

2018-04-09 14:26:06

Go語法實踐

2025-01-14 11:01:38

2022-05-30 08:14:48

編譯器Go語言

2022-12-09 08:52:51

Go匿名接口

2025-01-20 09:03:41

項目Error優(yōu)化

2025-05-06 00:00:08

2023-08-02 08:46:02

Go版本號規(guī)則

2023-08-09 08:53:50

GoWASI語義

2023-03-13 00:10:46

Go語言版本

2020-07-16 08:05:15

JavaGo

2011-05-27 09:51:44

Windows Pho應(yīng)用商店

2009-08-21 15:38:45

ControllerF

2021-02-20 11:40:35

SpringBoot占位符開發(fā)技術(shù)

2025-06-04 04:00:55

Go裸機環(huán)境

2015-02-12 15:33:43

微信SDK

2025-01-08 08:47:56

點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 亚洲高清中文字幕 | 99热精品国产 | 欧美久久一区 | 欧美日韩国产精品一区 | 中文字幕av色 | 日本亚洲欧美 | 一区二区视频 | 国产一级片精品 | 亚洲精品视频在线 | 超碰日本 | 91久操网| 日本一区二区三区在线观看 | 久久综合久久综合久久 | 狠狠草视频 | 蜜臀久久99精品久久久久久宅男 | 国产综合久久久久久鬼色 | av电影一区二区 | 在线看91| 成人福利网站 | 国产精品爱久久久久久久 | 亚洲一区国产 | 在线免费观看日本 | 亚洲 中文 欧美 日韩 在线观看 | 91精品一区二区 | 久久久精品一区二区三区 | 中文字幕亚洲区一区二 | 999www视频免费观看 | 欧美日韩专区 | 天天久久 | 国产精品欧美一区二区三区 | 中文字幕av第一页 | 日本精品视频在线观看 | 亚洲欧美一区二区三区国产精品 | 91欧美激情一区二区三区成人 | 综合精品 | 久久精品久久久久久 | www.一区二区三区.com | 日韩一区二区三区视频在线观看 | 免费成人在线网 | 国产中文区二幕区2012 | 国产精品视频在线免费观看 |