衡阳派盒市场营销有限公司

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

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

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

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

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

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

GOROOT

Go 源代碼的安裝目錄,MacWindows 安裝時(shí)會(huì)自動(dòng)配置好,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

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

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

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

GOPROXY

安裝包的下載代理地址,直接使用 七牛云 提供的代理地址 ,速度非常快!

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

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

GO111MODULE

是否開(kāi)啟了 gomod, 必須開(kāi)啟才可以使用 Go Module

# 查看 $GO111MODULE 模塊開(kāi)啟情況 
$ echo $GO111MODULE
on

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

建議將剛才的配置寫(xiě)入 ~/.bashrc 或者 ~/.zshrc 文件,永久有效。 到這里,我們第一步設(shè)置基礎(chǔ)環(huán)境變量的工作就完成了,可以驗(yà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"

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

Go 命令方法

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

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

Modules

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

初始化一個(gè)包

這里假設(shè)項(xiàng)目名稱為 HelloWorld

  • ? 新建項(xiàng)目的目錄,比如 /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
  • ? 這時(shí)可以看到目錄下多了一個(gè) go.mod 文件,其中內(nèi)容如下
$ cat go.mod
module helloworld

go 1.19  # 版本號(hào)可能和你的不一樣

安裝依賴

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

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

安裝 spf13/cast 包

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

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

go 1.19

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

將如下代碼寫(xiě)入文件 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)前項(xiàng)目的 Module 名稱以及依賴報(bào)名
helloworld
...
...
github.com/spf13/cast v1.4.1
... 
...

升級(jí)依賴

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

這里,我們將 spf13/cast 包從 v1.4.1 升級(jí)到 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)前項(xiàng)目中有些包已經(jīng)不再使用了,但是 go.mod 文件中依然定義了依賴關(guān)系,可以使用下面的命令自動(dòng)整理優(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  # 校驗(yàn)依賴

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

編輯器

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

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

    關(guān)注

    4

    文章

    595

    瀏覽量

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

    關(guān)注

    0

    文章

    139

    瀏覽量

    15477
  • go語(yǔ)言
    +關(guān)注

    關(guān)注

    1

    文章

    158

    瀏覽量

    9089
收藏 人收藏

    評(píng)論

    相關(guān)推薦

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

    大家好,我是麥?zhǔn)澹坝行』锇榻ㄗh出期如何快速搭建個(gè)MQTT協(xié)議的測(cè)試環(huán)境,因?yàn)樽约簩?xiě)的mq
    的頭像 發(fā)表于 12-26 09:28 ?2191次閱讀
    如何<b class='flag-5'>快速</b><b class='flag-5'>搭建</b><b class='flag-5'>一</b><b class='flag-5'>個(gè)</b>MQTT協(xié)議的測(cè)試<b class='flag-5'>環(huán)境</b>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    北京2023年11月14日?/美通社/ -- 在數(shù)字經(jīng)濟(jì)時(shí)代,應(yīng)用現(xiàn)代化正在成為個(gè)共識(shí)。 近日,中國(guó)軟件行業(yè)協(xié)會(huì)首屆“應(yīng)用現(xiàn)代化產(chǎn)業(yè)實(shí)踐優(yōu)秀案例”評(píng)選結(jié)果揭曉,軟通動(dòng)力應(yīng)用
    的頭像 發(fā)表于 11-14 16:50 ?682次閱讀
    軟通動(dòng)力應(yīng)用<b class='flag-5'>現(xiàn)代化</b>平臺(tái)工程產(chǎn)品及服務(wù)解決方案榮獲“2023年應(yīng)用<b class='flag-5'>現(xiàn)代化</b>典型案例”稱號(hào)
    百家乐网络赌场| 注册百家乐送彩金| 金沙百家乐娱乐城场| 网络百家乐金海岸| 威尼斯人娱乐网反水| 大发888赌场的微博| 博乐市| 百家乐官网水晶筹码| 网上百家乐官网软件大全酷| 免费百家乐官网过滤| 圣淘沙百家乐现金网| 在线百家乐作弊| 新世纪娱乐成| 可以玩百家乐官网的博彩公司| 潘多拉百家乐官网的玩法技巧和规则| 百家乐游戏机出千| 网上百家乐网| 大发888大发888官网| KK百家乐官网现金网| 91百家乐官网的玩法技巧和规则 | 百家乐官网英皇娱乐城| 百家乐投注玩多少钱| 永利百家乐的玩法技巧和规则 | 百家乐赢钱lv| 网上百家乐赌博经历| 远安县| 百家乐官网是娱乐场最不公平的游戏| 至尊百家乐娱乐场开户注册| 日博娱乐城开户| 百家乐园百乐彩| 百家乐官网开线| 澳门百家乐娱乐城怎么样| 赌场百家乐图片| 辉南县| 百家乐打水策略| 大发888游戏注册| 百家乐官网最全打法| 至尊百家乐官网娱乐网| 百家乐AG| 百家乐官网接线玩法| 百家乐概率统计|