最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

go module構(gòu)建項(xiàng)目的實(shí)現(xiàn)

 更新時(shí)間:2023年03月01日 10:27:54   作者:止語(yǔ)---  
本文主要介紹了go module構(gòu)建項(xiàng)目的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

在go 1.11版本中引入了Go Module內(nèi)置的包管理模塊,是GOPATH的替代品,集成了版本控制和軟件包分發(fā)支持的功能。即go使用modules管理依賴,項(xiàng)目依賴構(gòu)建時(shí)不需要再依賴GOPATH環(huán)境變量。 要使用go module首先要激活modules .升級(jí)go到1.11版本 .這里給出官方文檔: https://github.com/golang/go/wiki/Modules

module介紹

go module是go新的依賴包管理系統(tǒng),go module 是go語(yǔ)言從1.11版本之后官方推出的版本管理工具,基于vgo演變而來(lái),是一個(gè)新型的包管理工具,在go1.11和go1.12該功能還在試驗(yàn)階段,從go 1.13開(kāi)始,go module 成為了go語(yǔ)言默認(rèn)的依賴管理工具,從go1.14開(kāi)始已經(jīng)用于生產(chǎn)環(huán)境,并且鼓勵(lì)所有用戶從其他依賴包管理系統(tǒng)遷移到go module

激活go module

設(shè)置環(huán)境變量GO111MODULE=on或者auto,mac下查看:

zhiyu@C02G64E0MD6R ~ % go env
GO111MODULE="off"

需要將GO111MODULE設(shè)置為auto/on

export  GO111MODULE="on"

創(chuàng)建go module項(xiàng)目

打開(kāi)golang 創(chuàng)建新的工程,選擇go mod,這里創(chuàng)建的

如果需要配置依賴包鏡像,可以在 Environment 輸入框中點(diǎn)擊右側(cè)圖標(biāo),在彈出窗口新增 GOPROXY 環(huán)境變量進(jìn)行設(shè)置

在任意一個(gè)想要?jiǎng)?chuàng)建項(xiàng)目的目錄下,

在 Value 下拉列表中選擇 goproxy.io 這個(gè)鏡像即可,這是 Go 官方提供的全球代理。除此之外,你也可以通過(guò)終端命令行設(shè)置這個(gè)代理:

go env -w GOPROXY=https://goproxy.io,direct

點(diǎn)擊 OK 保存環(huán)境變量配置,在 GoLand 新建項(xiàng)目窗口點(diǎn)擊右下角 Create 創(chuàng)建這個(gè)新項(xiàng)目,此時(shí)calc工程目錄下新增go.mod文件,之后可以通過(guò)go mod來(lái)管理改項(xiàng)目的所有包依賴,目前這個(gè)文件包含的項(xiàng)目模塊如下所示:

go.mod的內(nèi)容如上圖所示

工程代碼

主要是實(shí)現(xiàn)計(jì)算器的功能,入口程序子然是main.go,該文件最終會(huì)被編譯為計(jì)算器程序的可執(zhí)行文件

算法庫(kù)位simplemath,一個(gè)函數(shù)功能對(duì)應(yīng)一個(gè)Go文件,如add.go實(shí)現(xiàn)加法運(yùn)算,sqrt.go實(shí)現(xiàn)平方根運(yùn)算
接著在calc根目錄下新增一個(gè)main.go文件,代碼如下所示:

package main

import (
	"calc/simplemath"
	"fmt"
	"os"
	"strconv"
)

var Usage = func() {
	fmt.Println("usage: calc command [arguments] ...")
	fmt.Println("\nThe commands are:\n\tadd\t計(jì)算兩個(gè)數(shù)值相加\n\tsqrt\t計(jì)算一個(gè)非負(fù)數(shù)的平方根")
}

func main() {
	//用于獲取命令參數(shù),注意程序本身第是第一個(gè)參數(shù)
	//比如 calc add 1 2 這條指令,第一個(gè)參數(shù)是calc

	args := os.Args
	if args  == nil || len(args) < 3 {
		Usage()
		return
	}

//	第二個(gè)參數(shù)表示計(jì)算方式
	switch args[1] {
	case "add":
		if len(args) != 4 {
			fmt.Println("Usage: calc add <intergerl><integerl>")
			return
		}

		v1, err1 := strconv.Atoi(args[2])
		v2, err2 := strconv.Atoi(args[3])

	//	獲取參數(shù)錯(cuò)誤則退出
	if err1 != nil || err2 != nil {
		fmt.Println("Usage: calc add <integerl1><integerl2>")
		return
	}

	//   從simplemath包中引入add方法
	ret := simplemath.Add(v1,v2)
	fmt.Println("Result: ", ret)

	case "sqrt":
		if len(args) != 3 {
			fmt.Println("Usage: calc sqrt <integer>")
			return
		}

		v, err := strconv.Atoi(args[2])
		if err != nil {
			fmt.Println("Usage: calc sqrt <interger>")
			return
		}
		ret := simplemath.Sqrt(v)
		fmt.Println("Result: ",ret)

	default:
		Usage()
	}

}

注意:Go 是強(qiáng)類型語(yǔ)言,底層會(huì)自動(dòng)根據(jù)賦值判斷對(duì)應(yīng)變量的類型,如果你試圖聲明一個(gè)沒(méi)有初始化值的變量,就會(huì)報(bào)錯(cuò)
接著實(shí)現(xiàn)算法庫(kù),在命令行中執(zhí)行

mkdir simplemath

并手動(dòng)創(chuàng)建兩個(gè)文件分別是add.gosqrt.go,工程目錄如下,兩個(gè)文件代碼分別如下所示

package simplemath

func Add(a int, b int) int {
	return a+b
}
package simplemath
import "math"
func Sqrt(i int) int {
	v := math.Sqrt(float64(i))
	return int(v)
}

go 工程構(gòu)建

計(jì)算器項(xiàng)目的代碼結(jié)構(gòu),在calc目前下并執(zhí)行go build構(gòu)建該項(xiàng)目,默認(rèn)會(huì)在根目錄下生成與項(xiàng)目名稱同名的可執(zhí)行文件,如下所示

然后calc黑色圖標(biāo)這個(gè)文件就是可執(zhí)行文件,然后在命令行進(jìn)行測(cè)試

執(zhí)行go build這就是為什么說(shuō) Go 命令行工具是非常強(qiáng)大的,我們不需要像 C 語(yǔ)言那樣編寫 makefile,因?yàn)檫@個(gè)工具會(huì)替我們分析,知道目標(biāo)代碼的編譯結(jié)果應(yīng)該是一個(gè)包還是一個(gè)可執(zhí)行文件,并分析 import 語(yǔ)句以了解包的依賴關(guān)系,從而在編譯 main.go 之前先把依賴的 simplemath 編譯打包好。Go 命令行程序制定的目錄結(jié)構(gòu)規(guī)則讓代碼管理變得非常簡(jiǎn)單.

到此這篇關(guān)于go module構(gòu)建項(xiàng)目的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)go module構(gòu)建項(xiàng)目?jī)?nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • go語(yǔ)言阻塞函數(shù)和非阻塞函數(shù)實(shí)現(xiàn)

    go語(yǔ)言阻塞函數(shù)和非阻塞函數(shù)實(shí)現(xiàn)

    本文主要介紹了go語(yǔ)言阻塞函數(shù)和非阻塞函數(shù)實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • Golang Copier入門到入坑探究

    Golang Copier入門到入坑探究

    這篇文章主要為大家介紹了Golang Copier入門到入坑探究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • Go語(yǔ)音開(kāi)發(fā)中常見(jiàn)Error類型處理示例詳解

    Go語(yǔ)音開(kāi)發(fā)中常見(jiàn)Error類型處理示例詳解

    這篇文章主要為大家介紹了Go語(yǔ)音開(kāi)發(fā)中常見(jiàn)Error類型處理示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • 利用ChatGPT編寫一個(gè)Golang圖像壓縮函數(shù)

    利用ChatGPT編寫一個(gè)Golang圖像壓縮函數(shù)

    這篇文章主要為大家詳細(xì)介紹了如何利用ChatGPT幫我們寫了一個(gè)Golang圖像壓縮函數(shù),文中的示例代碼簡(jiǎn)潔易懂,感興趣的小伙伴可以嘗試一下
    2023-04-04
  • Gorm存在時(shí)更新,不存在時(shí)創(chuàng)建的問(wèn)題

    Gorm存在時(shí)更新,不存在時(shí)創(chuàng)建的問(wèn)題

    這篇文章主要介紹了Gorm存在時(shí)更新,不存在時(shí)創(chuàng)建的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • 淺談Go語(yǔ)言不提供隱式數(shù)字轉(zhuǎn)換的原因

    淺談Go語(yǔ)言不提供隱式數(shù)字轉(zhuǎn)換的原因

    本文主要介紹了淺談Go語(yǔ)言不提供隱式數(shù)字轉(zhuǎn)換的原因,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • golang遍歷時(shí)修改被遍歷對(duì)象的示例詳解

    golang遍歷時(shí)修改被遍歷對(duì)象的示例詳解

    這篇文章主要介紹了golang遍歷時(shí)修改被遍歷對(duì)象的示例代碼,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-01-01
  • Go 熱加載之fresh詳解

    Go 熱加載之fresh詳解

    這篇文章主要為大家介紹了Go 熱加載之fresh詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • golang?日志庫(kù)ZAP[uber-go?zap]示例詳解

    golang?日志庫(kù)ZAP[uber-go?zap]示例詳解

    ZAP是由Uber開(kāi)源的高性能Go語(yǔ)言日志庫(kù),支持多種日志級(jí)別及基本信息打印,雖然ZAP本身不支持日志分割,但可以結(jié)合lumberjack進(jìn)行日志切割,實(shí)現(xiàn)日志按文件大小、時(shí)間或間隔切割等功能,ZAP提供Logger和SugaredLogger兩種日志記錄器
    2024-10-10
  • Go?模塊在下游服務(wù)抖動(dòng)恢復(fù)后CPU占用無(wú)法恢復(fù)原因

    Go?模塊在下游服務(wù)抖動(dòng)恢復(fù)后CPU占用無(wú)法恢復(fù)原因

    這篇文章主要為大家介紹了Go?模塊在下游服務(wù)抖動(dòng)恢復(fù)后CPU占用無(wú)法恢復(fù)原因詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11

最新評(píng)論

美姑县| 宝应县| 台南市| 庆城县| 周宁县| 永州市| 扶余县| 扬州市| 交城县| 离岛区| 晋宁县| 科技| 莆田市| 灌云县| 鄢陵县| 呈贡县| 福州市| 巴林左旗| 高阳县| 板桥市| 新泰市| 闸北区| 永德县| 沁水县| 长泰县| 稻城县| 古交市| 鞍山市| 隆安县| 白朗县| 叶城县| 呼伦贝尔市| 微山县| 双桥区| 和平区| 苍溪县| 泾阳县| 巍山| 库车县| 将乐县| 洪泽县|