0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何快速搭建一個現(xiàn)代化的Go開發(fā)環(huán)境?

冬至子 ? 來源:洋芋土豆 ? 作者:真沒什么深度 ? 2023-05-22 16:53 ? 次閱讀

基礎(chǔ)環(huán)境變量

GOROOT

Go 源代碼的安裝目錄,MacWindows 安裝時會自動配置好,Linux 一般在 /usr/local/go 目錄。

# 查看 $GOROOT 目錄
$ echo $GOROOT
/usr/local/bin

# 設(shè)置 $GOROOT 目錄
$ export GOROOT=/usr/local/bin

# 增加 go 相關(guān)命令到 PATH
$ export PATH=$PATH:/usr/local/go/bin

GOPATH

簡單來說,就是存放 Go 第三方庫的源代碼以及構(gòu)建后可執(zhí)行程序的目錄,建議設(shè)置為獨(dú)立的目錄并且不要存放其他文件。

# 查看 $GOPATH 目錄
$ echo $GOPATH
/home/codes/go

# 設(shè)置 $GOPATH 目錄
$ export GOPATH=/home/codes/go

GOPROXY

安裝包的下載代理地址,直接使用 七牛云 提供的代理地址 ,速度非??欤?/p>

# 查看 $GOPROXY 代理地址 
$ echo $GOPROXY
https://goproxy.cn

# 設(shè)置 $GOPROXY 目錄
$ export GOPROXY=https://goproxy.cn

GO111MODULE

是否開啟了 gomod, 必須開啟才可以使用 Go Module 。

# 查看 $GO111MODULE 模塊開啟情況 
$ echo $GO111MODULE
on

# 設(shè)置 $GOPROXY 目錄
$ export GO111MODULE="on"

建議將剛才的配置寫入 ~/.bashrc 或者 ~/.zshrc 文件,永久有效。 到這里,我們第一步設(shè)置基礎(chǔ)環(huán)境變量的工作就完成了,可以驗證一下設(shè)置是否成功:

$ go env | grep -i -E "root|path|goproxy|module"
GO111MODULE="on"
GOPATH="/home/codes/go"
GOPROXY="https://goproxy.cn"
GOROOT="/usr/local/go"

通過輸出結(jié)果可以看到,剛才的配置已經(jīng)全部完成。

Go 命令方法

env 命令除了查看環(huán)境變量外,同樣可以設(shè)置環(huán)境變量。

# 通過 go env 命令設(shè)置代理環(huán)境變量
$ go env -w GOPROXY=https://goproxy.cn,direct

Modules

Go 從 1.12 版本開始,默認(rèn)支持 Go Modules, 從此徹底告別配置 GOPATH 以及包下載及依賴導(dǎo)致的各種奇葩問題。

初始化一個包

這里假設(shè)項目名稱為 HelloWorld 。

  • ? 新建項目的目錄,比如 /home/codes/projects/HelloWorld
  • ? 切換到 /home/codes/projects/HelloWorld 目錄
  • ? 執(zhí)行命令 go mod init helloworld
# 輸出如下
go: creating new go.mod: module helloworld
go: to add module requirements and sums:
go mod tidy
  • ? 這時可以看到目錄下多了一個 go.mod 文件,其中內(nèi)容如下
$ cat go.mod
module helloworld

go 1.19  # 版本號可能和你的不一樣

安裝依賴

Go 的包名定義非常簡單,就是一個普通的 URL (以域名打頭),可以是主流的代碼倉庫地址,也可以是自己搭建的代碼倉庫。下面的例子統(tǒng)一以 Github 演示。

# 語法規(guī)則: 其中版本號可以是 git 分支或 tag
go get 包名@版本號
# 例: go get github.com/spf13/cast@v1.4.1

安裝 spf13/cast 包

spf13/cast 是一個數(shù)據(jù)類型轉(zhuǎn)換包,可以非常簡單地對常見數(shù)據(jù)類型互相轉(zhuǎn)換,并且不會引發(fā) panic

  • ? 執(zhí)行命令:
$ go get github.com/spf13/cast@v1.4.1
# 輸出如下
go: added github.com/spf13/cast v1.4.1
  • ? 打開 go.mod 文件,內(nèi)容如下:
module helloworld

go 1.19

require github.com/spf13/cast v1.4.1 // indirect
  • ? 在 go.mod 旁邊多了一個 go.sum 文件,內(nèi)容如下:
github.com/davecgh/go-spew 
...
... 
github.com/stretchr/testify
  • ? 使用安裝好的包

將如下代碼寫入文件 main.go

package main

import (
    "fmt"

    "github.com/spf13/cast"
)

func main() {
    s := cast.ToString(1024)
    fmt.Printf("s is a %T, val = %s\\n", s, s)
}
$ go run main.go
// 輸出如下
/**
  s is a string, val = 1024
*/

查看依賴

# 列表輸出
$ go list -m -m all
# # json 輸出
$ go list -m -json all 

# 輸出當(dāng)前項目的 Module 名稱以及依賴報名
helloworld
...
...
github.com/spf13/cast v1.4.1
... 
...

升級依賴

# 語法規(guī)則: 
# 升級次級或補(bǔ)丁版本號
go get -u 包名@版本號
# 僅升級補(bǔ)丁版本號
go get -u=patch 包名@版本號

這里,我們將 spf13/cast 包從 v1.4.1 升級到 1.5.0,執(zhí)行如下命令:

go get -u github.com/spf13/cast@v1.5.0
# 輸出如下
go: upgraded github.com/spf13/cast v1.4.1 => v1.5.0

查看 go.mod 文件,內(nèi)容已經(jīng)更新為:

module helloworld

go 1.19

require github.com/spf13/cast v1.5.0 // indirect

刪除依賴

當(dāng)前項目中有些包已經(jīng)不再使用了,但是 go.mod 文件中依然定義了依賴關(guān)系,可以使用下面的命令自動整理優(yōu)化 go.mod 文件。

$ go mod tidy

常用命令

go mod init  # 初始化
go mod tidy  # 更新 (移除) 依賴文件
go mod download  # 下載依賴文件

go mod vendor  # 將依賴全部歸檔到 vendor 目錄
go mod edit    # 修改依賴文件
go mod graph   # 打印依賴關(guān)系 圖
go mod verify  # 校驗依賴

到這里,Go Modules 的基礎(chǔ)配置及使用已經(jīng)完成,我們可以快速導(dǎo)入成熟的第三方庫來加速開發(fā)。

編輯器

工欲善其事,必先利其器。 現(xiàn)代化項目開發(fā),一個高效的 IDE 必不可少。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • Linux系統(tǒng)
    +關(guān)注

    關(guān)注

    4

    文章

    590

    瀏覽量

    27317
  • URL
    URL
    +關(guān)注

    關(guān)注

    0

    文章

    139

    瀏覽量

    15298
  • go語言
    +關(guān)注

    關(guān)注

    1

    文章

    158

    瀏覽量

    9016
收藏 人收藏

    評論

    相關(guān)推薦

    如何快速搭建MQTT協(xié)議的測試環(huán)境

    大家好,我是麥?zhǔn)?,之前有小伙伴建議出期如何快速搭建MQTT協(xié)議的測試環(huán)境,因為自己寫的mq
    的頭像 發(fā)表于 12-26 09:28 ?1932次閱讀
    如何<b class='flag-5'>快速</b><b class='flag-5'>搭建</b><b class='flag-5'>一</b><b class='flag-5'>個</b>MQTT協(xié)議的測試<b class='flag-5'>環(huán)境</b>

    基于RFID的現(xiàn)代化奶牛場管理應(yīng)用

    0 引言 信息與自動現(xiàn)代管理技術(shù)在畜牧業(yè)發(fā)展中的地位越來越重要,基于無線射頻原理的奶牛自動識別系統(tǒng),是現(xiàn)代化奶牛場管理 中不可或缺的部分。無線射頻識別技術(shù)(RFID)是
    發(fā)表于 07-17 08:31

    怎么強(qiáng)化現(xiàn)代化IC的設(shè)計環(huán)境?

    數(shù)字設(shè)計及驗證技術(shù)演進(jìn)的概觀現(xiàn)代化IC設(shè)計環(huán)境必須強(qiáng)化的方法
    發(fā)表于 04-09 06:17

    現(xiàn)代化網(wǎng)絡(luò)的完全響應(yīng)式設(shè)計方案

    現(xiàn)代化的網(wǎng)絡(luò)可以完全響應(yīng),并且每天都有更多的設(shè)計師意識到這點(diǎn)。 但是,在響應(yīng)式設(shè)計方面存在艱巨的挑戰(zhàn): 嵌入式內(nèi)容 。從YouTube到Vimeo的每個視頻網(wǎng)站都具有固定為特定大
    發(fā)表于 12-23 08:04

    Go語言及Beego框架環(huán)境搭建相關(guān)資料推薦

    1、Go語言及Beego框架環(huán)境搭建  在開始環(huán)境搭建之前,我們先起來看看:  
    發(fā)表于 10-17 16:57

    淺談現(xiàn)代化設(shè)備維修與可持續(xù)發(fā)展

    針對現(xiàn)代化設(shè)備維修存在的嚴(yán)重資源與環(huán)境問題,簡要闡述設(shè)備維修與可持續(xù)發(fā)展的關(guān)系。
    發(fā)表于 12-24 11:52 ?30次下載

    php開發(fā)環(huán)境搭建和使用

    本文主要介紹的是php開發(fā)環(huán)境搭建和使用。apache在默認(rèn)情況下不會處理php頁面,Apache處理php頁面的步驟:即:php開發(fā)環(huán)境
    的頭像 發(fā)表于 02-01 15:26 ?3411次閱讀
    php<b class='flag-5'>開發(fā)</b><b class='flag-5'>環(huán)境</b>的<b class='flag-5'>搭建</b>和使用

    代碼現(xiàn)代化是什么,如何使用它來優(yōu)化代碼

    Robert Geva談?wù)摯a現(xiàn)代化是什么以及開發(fā)人員如何使用它來優(yōu)化代碼。
    的頭像 發(fā)表于 11-12 06:00 ?2521次閱讀

    如何搭建鴻蒙開發(fā)環(huán)境

    開發(fā)一個平臺的程序,那么首先要搭建出本地開發(fā)環(huán)境,那么如何搭建鴻蒙
    的頭像 發(fā)表于 02-24 11:25 ?3691次閱讀
    如何<b class='flag-5'>搭建</b>鴻蒙<b class='flag-5'>開發(fā)</b><b class='flag-5'>環(huán)境</b>

    網(wǎng)絡(luò)基礎(chǔ)設(shè)施現(xiàn)代化必需的五步驟

    基礎(chǔ)設(shè)施現(xiàn)代化這個術(shù)語,對不同的人意味著不同的東西。畢竟,沒有任何兩企業(yè)網(wǎng)絡(luò)基礎(chǔ)架構(gòu)的設(shè)計和構(gòu)建是基于相同的業(yè)務(wù)目標(biāo)。然而,與很久以前的網(wǎng)絡(luò)相比,新構(gòu)建的基礎(chǔ)設(shè)施之間的共同點(diǎn)會更多。因此,基礎(chǔ)設(shè)施現(xiàn)代化的過程可能在很多方面都很
    發(fā)表于 06-14 16:56 ?1673次閱讀

    如何快速搭建輕應(yīng)用或行業(yè)應(yīng)用

    隨著高速發(fā)展的數(shù)字化時代,越來越多的企業(yè)應(yīng)用,對技術(shù)要求越來越高,軟件實現(xiàn)越來越復(fù)雜,需要更快、更高效的開發(fā)。 如何快速搭建輕應(yīng)用或行業(yè)
    的頭像 發(fā)表于 08-24 09:56 ?2496次閱讀

    如何搭建套 Linux 開發(fā)環(huán)境

    對于剛接觸嵌入式 Linux 系統(tǒng)開發(fā)的同學(xué)來說,搭建開發(fā)環(huán)境不小的挑戰(zhàn),我看到過很多在入
    的頭像 發(fā)表于 08-25 08:54 ?2355次閱讀

    HPM6750開發(fā)環(huán)境搭建快速上手

    鑒于不少小伙伴已經(jīng)拿到了HPM6750的開發(fā)套件,本文將基于HPM6750 EVKMINI開發(fā)板,從開發(fā)環(huán)境搭建開始,帶你
    的頭像 發(fā)表于 12-20 11:52 ?3656次閱讀

    喜報丨軟通動力應(yīng)用現(xiàn)代化平臺工程產(chǎn)品及服務(wù)解決方案榮獲“2023年應(yīng)用現(xiàn)代化典型案例”稱號

    在數(shù)字經(jīng)濟(jì)時代,應(yīng)用現(xiàn)代化正在成為共識。 近日,中國軟件行業(yè)協(xié)會首屆“應(yīng)用現(xiàn)代化產(chǎn)業(yè)實踐優(yōu)秀案例”評選結(jié)果揭曉, 軟通動力應(yīng)用現(xiàn)代化研究
    的頭像 發(fā)表于 11-13 19:30 ?667次閱讀
    喜報丨軟通動力應(yīng)用<b class='flag-5'>現(xiàn)代化</b>平臺工程產(chǎn)品及服務(wù)解決方案榮獲“2023年應(yīng)用<b class='flag-5'>現(xiàn)代化</b>典型案例”稱號

    軟通動力應(yīng)用現(xiàn)代化平臺工程產(chǎn)品及服務(wù)解決方案榮獲“2023年應(yīng)用現(xiàn)代化典型案例”稱號

    北京2023年11月14日?/美通社/ -- 在數(shù)字經(jīng)濟(jì)時代,應(yīng)用現(xiàn)代化正在成為共識。 近日,中國軟件行業(yè)協(xié)會首屆“應(yīng)用現(xiàn)代化產(chǎn)業(yè)實踐優(yōu)秀案例”評選結(jié)果揭曉,軟通動力應(yīng)用
    的頭像 發(fā)表于 11-14 16:50 ?611次閱讀
    軟通動力應(yīng)用<b class='flag-5'>現(xiàn)代化</b>平臺工程產(chǎn)品及服務(wù)解決方案榮獲“2023年應(yīng)用<b class='flag-5'>現(xiàn)代化</b>典型案例”稱號