網站首頁 編程語言 正文
1. GOPATH 和 GOROOT(環境變量)
1. GOROOT
go 編譯器、標準庫等安裝的地方,所有我們寫的代碼其實都是文本文件而已,需要編譯器等工具將其加工成可執行文件或者庫文件才能使用,每種語言都有自己的這樣一套“工具”。GOROOT 就是 go 語言的這類“工具”的安裝目錄。
2. GOPATH
類似工作區(workspace)的概念,其中里面有三個文件夾
- src:保存自己的源代碼,或者第三方依賴的代碼,有了 go module 現在一般不用這個了;
- pkg:一般保存一些庫文件,在 go module 模式中,也存儲下載下來的依賴 module;
- bin:它保存已編譯的可執行文件;
有一些老的 go 教程,需要源代碼放在 src 目錄下,現在這種模式已經不推薦了,因為現在推薦的是 go module 模式,自己寫的 module 放在哪里都可以。 之所以老的那種模式被廢棄,主要原因是無法很好的做依賴管理。
3. Package
GO 語言使用 package 來組織源代碼的,就像其他的語言一樣,在程序內部需要將功能進行劃分,任何一個 go 語言程序必須屬于一個package,每個 go 文件的開頭要寫上 package xxx。
package 一般要滿足如下三個條件:
- 同一個目錄下的同級的所有 .go 文件應該屬于一個包;
- 包名建議和目錄名同名;
- 一個 go 程序有且只有一個 main 函數作為程序入口,且必須屬于 main 包,沒有或者有多個 main 包,編譯程序會出錯。
2. Go Module
1. GO111MODULE
Go Module 在 go 1.14 正式發布,不用再把源代碼放在 src 文件夾下,比之前更好的依賴管理,也是現在推薦的做法。啟用 Go Modules 需要顯示設置一個環境變量 GO111MODULE=on。
利用 go mod init 命令在當前目錄初始化一個 module,如下。
go mod init example.com/test
2. Module Path
其中 example.com/test 叫做 moudle path ,一般采用“代碼倉庫 + module name” 的方式定義。例如 github.com/go-sql-driver/mysq go 會去 github 倉庫去獲取這個 module。
3. go.mod 和 go.sum
在 module 主目錄下主要會有兩個文件和 module 相關:
- go.mod:它用來標記一個 module 和它的依賴庫以及依賴庫的版本。
- go.sum:記錄了所有依賴的 module 的校驗信息,為了防止下載的 module 被惡意篡改,主要用于安全校驗。
3. Go 的幾個命令
1. go run
可以快速的運行某個 go 文件,go 在背后會在臨時的目錄編譯并且執行,在程序退出后清除臨時目錄。
2. go build
編譯 main 包,并在當前或者指定的目錄生成可執行文件,非 main 包一般不會生成任何文件。
3. go install
編譯 go 文件,將生成的可執行文件或者庫文件放到 GOPATH 下的 bin 或者 pkg 文件夾下。
原文鏈接:https://www.cnblogs.com/WAoyu/p/16706372.html
相關推薦
- 2022-09-25 【報錯:No module named pytest】
- 2022-05-06 pyecharts的Tab和Legend布局詳情_python
- 2022-08-21 GoLang讀取文件的10種方法實例_Golang
- 2022-11-30 Docker系列compose?ymal文件解析學習_docker
- 2022-12-01 Rust實現AES加解密詳解_Rust語言
- 2022-12-01 Django+Ajax異步刷新/定時自動刷新實例詳解_python
- 2023-07-02 Python配置文件管理之ini和yaml文件讀取的實現_python
- 2022-05-09 Python實現連接FTP并下載文件夾_python
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支