網(wǎng)站都有什么類型十五種常見的銷售策略
簡介
Go 即 Golang,是 Google 公司 2009 年 11 月正式對外公開的一門編程語言。
根據(jù) Go 語言開發(fā)者自述,近 10 多年,從單機(jī)時代的 C 語言到現(xiàn)在互聯(lián)網(wǎng)時代的 Java,都沒有令人滿意的開發(fā)語言,而 C++往往給人的感覺是,花了 100%的經(jīng)歷,卻只有 60%的開發(fā)效率,產(chǎn)出比太低,Java 和 C#的哲學(xué)又來源于 C++。并且,隨著硬件的不斷升級,這些語言不能充分的利用硬件及 CPU。因此,一門高效、簡潔、開源的語言誕生了。
Go 語言不僅擁有靜態(tài)編譯語言的安全和高性能,而且又達(dá)到了動態(tài)語言開發(fā)速度和易維護(hù)性。有人形容 Go 語言:Go = C + Python , 說明 Go 語言既有 C 語言程序的運(yùn)行速度,又能達(dá)到 Python 語言的快速開發(fā)。
Windows環(huán)境搭建
- 下載golang
Go 官網(wǎng)下載地址
Go 官方鏡像站(沒有VPN就選擇這個地址)
- 安裝
- 點(diǎn)擊安裝即可
- 驗證
go version
- 查看go環(huán)境
go env
說明:Go1.11 版本之后無需手動配置環(huán)境變量,使用 go mod 管理項目,也不需要非得把項目放到 GOPATH 指定目錄下,你可以在你磁盤的任何位置新建一個項目。
Go1.13 以后可以徹底不要 GOPATH 了。
說白了就是讓用戶更簡單的使用go
開發(fā)工具
-
goland
-
vscode
個人喜歡jetbrains所有產(chǎn)品,但是由于需要收費(fèi)(你懂的),所以這里暫時用vscode。
- vscode安裝
詳細(xì)安裝參考這篇博客
- vscode安裝go插件
- 本地創(chuàng)建一個目錄
- vscode打開這個目錄
創(chuàng)建一個以go結(jié)尾的文件,vscode就會識別出用go插件解析:
此時就會讓安裝go提示工具,安裝即可
注意如果vscode寫代碼沒有提示,可以配置下面環(huán)境變量
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn //將代理設(shè)置為國內(nèi)源
- GO111MODULE 是 Go 1.11 引入的一個環(huán)境變量,用于控制 Go 模塊(Module)的行為。設(shè)置為 on 表示強(qiáng)制啟用 Go 模塊模式,無論項目是否在 GOPATH 目錄下。在模塊模式下,Go 會忽略 GOPATH 和 vendor 目錄,轉(zhuǎn)而使用 go.mod 文件來管理依賴。
- GOPROXY 是 Go 模塊模式下用于指定模塊代理服務(wù)器的環(huán)境變量。默認(rèn)情況下,Go 會直接從版本控制系統(tǒng)(如 GitHub)下載依賴模塊,但在國內(nèi)訪問這些源可能會比較慢或不穩(wěn)定。
設(shè)置為 https://goproxy.cn 表示使用國內(nèi)的 Go 模塊代理服務(wù)器,這樣可以加速依賴模塊的下載。
- 編寫hello world代碼進(jìn)行測試
后記
vscode和goland體驗差距太大了:
-
如果仍然有出現(xiàn)寫代碼沒有提示的情況,那么請手動安裝相關(guān)的包:
把所有的包都選上安裝,最好有VPN
然后重啟vscode。
此時就會自動安裝,安裝成功后就會有提示了。
-
需要手動初始化模塊,否則提示:initialization failed: packages.Load error: err: exit status 1: stderr: go: go.mod file not found in current directory or any parent directory; see 'go help modules’go list。
這意味著你的項目目錄中沒有 go.mod 文件,而 Go 工具鏈期望在模塊模式下工作。
此時只要執(zhí)行下面命令:
go mod init <module-name>
此時項目根目錄就會多了一個go.mod文件,并且提示信息也沒有了
go.mod簡介
go.mod
文件是 Go 語言中用于模塊管理的核心文件。它定義了當(dāng)前項目的模塊路徑、Go 版本以及項目所依賴的其他模塊(第三方庫或內(nèi)部模塊)。Go 模塊(Module)是 Go 1.11 版本引入的依賴管理機(jī)制,用于取代舊的 GOPATH
模式。
go.mod
文件的作用
-
定義模塊路徑:
go.mod
文件的第一行通常定義了模塊的名稱(模塊路徑),例如:
這個路徑是唯一的,通常與代碼倉庫的路徑一致,用于標(biāo)識模塊。module github.com/username/myproject
-
管理依賴:
go.mod
文件會記錄項目所依賴的其他模塊及其版本。例如:
這些依賴項會在運(yùn)行require (github.com/gin-gonic/gin v1.9.1golang.org/x/sync v0.3.0 )
go mod tidy
或go build
時自動下載到本地。
-
鎖定依賴版本:
- 除了
go.mod
文件,Go 還會生成一個go.sum
文件,用于記錄依賴模塊的完整哈希值,確保每次構(gòu)建時使用的依賴版本一致,避免因依賴版本不一致導(dǎo)致的問題。
- 除了
-
指定 Go 版本:
go.mod
文件可以指定項目所需的 Go 版本,例如:
這表示該項目需要 Go 1.20 或更高版本來編譯。go 1.20
-
支持模塊化開發(fā):
- Go 模塊允許你將代碼拆分為多個模塊,每個模塊可以獨(dú)立管理依賴和版本,適合大型項目或微服務(wù)架構(gòu)。
go.mod
文件的結(jié)構(gòu)
一個典型的 go.mod
文件如下:
module github.com/username/myprojectgo 1.20require (github.com/gin-gonic/gin v1.9.1golang.org/x/sync v0.3.0
)replace github.com/old/module => github.com/new/module v1.2.3exclude github.com/deprecated/module v1.0.0
module
:定義模塊路徑。go
:指定 Go 版本。require
:列出項目依賴的模塊及其版本。replace
:用于替換某個依賴模塊的路徑或版本(例如,使用本地的模塊或 fork 的模塊)。exclude
:排除某個模塊的特定版本。
如何生成 go.mod
文件
如果你還沒有 go.mod
文件,可以通過以下命令生成:
go mod init <module-name>
例如:
go mod init github.com/username/myproject
運(yùn)行后,Go 會生成一個 go.mod
文件,并根據(jù)項目中的 import
語句自動添加依賴。
常用的 Go 模塊命令
go mod init
:初始化模塊,生成go.mod
文件。go mod tidy
:根據(jù)代碼中的import
語句,自動添加或刪除go.mod
中的依賴。go mod download
:下載依賴模塊到本地緩存(通常在$GOPATH/pkg/mod
目錄下)。go mod vendor
:將依賴復(fù)制到項目的vendor
目錄中,用于離線構(gòu)建。go list -m all
:列出當(dāng)前模塊的所有依賴。
為什么需要 go.mod
文件?
在 Go 1.11 之前,Go 使用 GOPATH
模式管理代碼和依賴,所有項目都必須放在 GOPATH
目錄下,且依賴管理非常不方便。引入 go.mod
文件后:
- 項目可以放在任何位置。
- 依賴版本可以精確控制。
- 支持模塊化開發(fā),適合現(xiàn)代軟件工程實(shí)踐。
參考文獻(xiàn)
https://go.dev/doc/tutorial/getting-started
https://gobyexample.com/
https://www.w3schools.com/go/
https://go.dev/doc/tutorial/
https://www.geeksforgeeks.org/golang-tutorial-learn-go-programming-language/