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

Go語(yǔ)言包管理工具dep的安裝與使用

 更新時(shí)間:2018年07月11日 09:39:52   作者:Summer7C  
godep是解決包依賴的管理工具,下面這篇文章主要給大家介紹了關(guān)于Go語(yǔ)言包管理工具dep的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

什么是dep?

dep和go,在一定程度上相當(dāng)于maven之于Java,composer之于PHP,dep是go語(yǔ)言官方的一個(gè)包管理工具。

相比較go get而言,dep可以直接給引入的第三方包一個(gè)專門(mén)的目錄,并且可以專門(mén)制定一個(gè)配置文件,控制go項(xiàng)目所引入的包,版本以及其他依賴關(guān)系。

dep這個(gè)項(xiàng)目放在golang官方的github中:https://github.com/golang/dep

官方對(duì)于dep的解釋是:dep is the official experiment, but not yet the official tool. 也就是說(shuō),dep目前還處于試驗(yàn)階段,還并沒(méi)有成為一個(gè)官方意義上的工具。畢竟go語(yǔ)言還很年輕,但是這也充分的證明了go語(yǔ)言的生態(tài)圈十分豐富。

安裝

安裝dep工具的方式有很多種,如果是mac電腦的話,只需要如下命令:

brew install dep

對(duì)于Linux和類Unix系統(tǒng)而言,我們還可以使用如下方式安裝dep:

curl https://raw.githubusercontent.com/golang/dep/master/install.sh | sh

或者直接使用源碼安裝。

而對(duì)于windows電腦,可能會(huì)相對(duì)來(lái)說(shuō)麻煩些,我們可以直接使用源碼編譯安裝或者直接使用go get命令安裝:

go get -u github.com/golang/dep/cmd/dep

待安裝完成之后,將dep.exe放在環(huán)境變量就可以使用了。

使用

接下來(lái)我們來(lái)看一下dep的使用方式。

當(dāng)安裝好dep之后,我們?cè)诿钚兄校斎雂ep就可以看到有關(guān)dep的命令了。

Dep is a tool for managing dependencies for Go projects

Usage: "dep [command]"

Commands:

 init Set up a new Go project, or migrate an existing one
 status Report the status of the project's dependencies
 ensure Ensure a dependency is safely vendored in the project
 version Show the dep version information

Examples:
 dep init  set up a new project
 dep ensure  install the project's dependencies
 dep ensure -update  update the locked versions of all dependencies
 dep ensure -add github.com/pkg/errors add a dependency to the project

Use "dep help [command]" for more information about a command.

我們可以看出來(lái),dep一般進(jìn)場(chǎng)會(huì)使用3個(gè)命令:

init-用來(lái)初始化項(xiàng)目

status-用來(lái)查看當(dāng)前項(xiàng)目的依賴包的狀態(tài)

ensure-用來(lái)同步包的配置文件和引入的包

下面我們正式使用dep來(lái)創(chuàng)建一個(gè)項(xiàng)目。首先建立一個(gè)項(xiàng)目路徑,這里我們將項(xiàng)目路徑叫做depProject。然后在項(xiàng)目路徑中建立src源代碼目錄。在src中建立一個(gè)存放dep文件和項(xiàng)目主文件的目錄,我們暫且可以叫做depmain,并建立一個(gè)go文件。

這樣我們的目錄結(jié)構(gòu)如下:

depProject
    |----src
          |----depmain
                  |-----main.go

建立好之后,我們?cè)趍ain.go中寫(xiě)一個(gè)簡(jiǎn)單的go程序:

package main

import (
 "fmt"
)
func main() {
 fmt.Println("hello)
}

之后我們?cè)谶@個(gè)目錄下運(yùn)行如下命令:

dep init

運(yùn)行完成之后,dep就會(huì)為我們自動(dòng)生成如下文件和目錄:

 

有點(diǎn)像常規(guī)go項(xiàng)目的樣子了,不過(guò)需要注意的是pkg中存放的go語(yǔ)言引入包的緩存文件,vendor中存放的是真正的引入的包內(nèi)容。接下來(lái)是兩個(gè)文件,Gopkg.lock和Gopkg.toml。Gopkg.lock文件是自動(dòng)生成的,而Gopkg.toml文件是我們可以編輯的文件,通過(guò)編輯這個(gè)文件,并運(yùn)行dep的命令可以達(dá)到引入包的目的:

# 必需包
required = ["github.com/gin-gonic/gin"]
# 忽略包
#ignored = []沒(méi)有可以不寫(xiě)
# 項(xiàng)目元數(shù)據(jù)
#[metadata]


# 約束條件
[[constraint]]
 # name = 
 # 可選:版本
 # version =
 # 分支
 # branch
 # 修訂
 # revision
 # 可選:指定來(lái)源
 # source = "github.com/gin-gonic/gin"

以上代碼是一個(gè)示例,我們寫(xiě)好之后運(yùn)行

dep ensure

就可以了,我們會(huì)看到vendor下多了一些有關(guān)此包的依賴和引入。

我們引入了gin框架的包,所以我們現(xiàn)在就可以使用gin框架了,寫(xiě)的時(shí)候,和我們平時(shí)的go語(yǔ)言項(xiàng)目一樣:

package main

import "github.com/gin-gonic/gin"

func main() {
 r := gin.Default()
 r.GET("/ping", func(c *gin.Context) {
 c.JSON(200, gin.H{
  "message": "pong",
 })
 })
 r.Run() // listen and serve on 0.0.0.0:8080
}

這樣做完全沒(méi)有問(wèn)題,我們只用考慮這個(gè)包原本的路徑github.com/gin-gonic/gin就好。

接下來(lái)我們就可以編譯運(yùn)行這個(gè)項(xiàng)目了。

另外需要注意的是,使用dep管理包控制依賴的時(shí)候,如果我們需要新建目錄,并編寫(xiě)自己的新的包名的時(shí)候,只需要在src下新建目錄就可以了。這樣做才能正確引入。

比如:我們要編寫(xiě)一個(gè)add的函數(shù),我們可以這樣,在src下簡(jiǎn)歷一個(gè)utils目錄,下寫(xiě)個(gè)add.go文件:

package utils

func Add(a int, b int) int {
 return a+b
}

這樣在主程序中,這樣寫(xiě)就可以import自己寫(xiě)的包,并使用自己的函數(shù)了:

package main

import (
 "utils"
 "fmt"
)
func main() {
 fmt.Println("hello")
 utils.Add(1, 1)
}

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

  • 詳解Go是如何優(yōu)雅的進(jìn)行內(nèi)存管理

    詳解Go是如何優(yōu)雅的進(jìn)行內(nèi)存管理

    Go語(yǔ)言拋棄C/C++中的開(kāi)發(fā)者管理內(nèi)存的方式,實(shí)現(xiàn)了主動(dòng)申請(qǐng)與主動(dòng)釋放管理,增加了逃逸分析和垃圾回收,將開(kāi)發(fā)者從內(nèi)存管理中釋放出來(lái),作為進(jìn)階的Go開(kāi)發(fā),了解掌握Go的內(nèi)存管理還是很有必要的
    2023-09-09
  • Golang開(kāi)發(fā)gRPC服務(wù)入門(mén)介紹

    Golang開(kāi)發(fā)gRPC服務(wù)入門(mén)介紹

    這篇文章主要介紹了Golang開(kāi)發(fā)gRPC服務(wù),Golang開(kāi)發(fā)gRPC應(yīng)用程序的套路也已經(jīng)很清晰,這篇文章就來(lái)做一個(gè)簡(jiǎn)單的介紹,算是入門(mén),需要的朋友可以參考下
    2022-04-04
  • golang defer執(zhí)行順序全面詳解

    golang defer執(zhí)行順序全面詳解

    這篇文章主要為大家介紹了golang defer執(zhí)行順序全面詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • Go語(yǔ)言中sync.Mutex的使用方法

    Go語(yǔ)言中sync.Mutex的使用方法

    本文主要介紹了golang中sync.Mutex的實(shí)現(xiàn)方法,mutex主要有兩個(gè) method:Lock()和Unlock(),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • go內(nèi)存緩存BigCache封裝Entry源碼解讀

    go內(nèi)存緩存BigCache封裝Entry源碼解讀

    這篇文章主要為大家介紹了go內(nèi)存緩存BigCache封裝Entry源碼解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • go語(yǔ)言變量定義用法實(shí)例

    go語(yǔ)言變量定義用法實(shí)例

    這篇文章主要介紹了go語(yǔ)言變量定義用法,實(shí)例分析了go語(yǔ)言變量的定義及使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-02-02
  • golang如何去除 context 的 deadline

    golang如何去除 context 的 deadline

    在使用 context 的時(shí)候遇到了開(kāi)協(xié)程處理任務(wù)的情況,但是直接在協(xié)程里使用主線程的 context 會(huì)導(dǎo)致當(dāng)主線程返回時(shí)協(xié)程任務(wù)也會(huì)因?yàn)?nbsp;context cancel 而失敗,本文提供了兩種辦法可以取消掉 context 里的 timeout 和 deadline,再設(shè)置一個(gè)新的 timeout 上去
    2023-03-03
  • Golang實(shí)現(xiàn)微信公眾號(hào)后臺(tái)接入的示例代碼

    Golang實(shí)現(xiàn)微信公眾號(hào)后臺(tái)接入的示例代碼

    這篇文章主要介紹了Golang實(shí)現(xiàn)微信公眾號(hào)后臺(tái)接入的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • vim配置go語(yǔ)言語(yǔ)法高亮問(wèn)題的解決方法

    vim配置go語(yǔ)言語(yǔ)法高亮問(wèn)題的解決方法

    vim配置go語(yǔ)言語(yǔ)法高亮的問(wèn)題已經(jīng)遇到過(guò)好幾次了,每次都是找不到答案,今天小編給大家?guī)?lái)了vim配置go語(yǔ)言語(yǔ)法高亮問(wèn)題的解決方法,感興趣的朋友一起看看吧
    2018-01-01
  • 一文搞懂Golang文件操作增刪改查功能(基礎(chǔ)篇)

    一文搞懂Golang文件操作增刪改查功能(基礎(chǔ)篇)

    這篇文章主要介紹了一文搞懂Golang文件操作增刪改查功能(基礎(chǔ)篇),Golang 可以認(rèn)為是服務(wù)器開(kāi)發(fā)語(yǔ)言發(fā)展的趨勢(shì)之一,特別是在流媒體服務(wù)器開(kāi)發(fā)中,已經(jīng)占有一席之地,今天我們不聊特別深?yuàn)W的機(jī)制和內(nèi)容,就來(lái)聊一聊 Golang 對(duì)于文件的基本操作
    2021-04-04

最新評(píng)論

离岛区| 尼木县| 同江市| 靖宇县| 寻乌县| 余姚市| 渝北区| 江陵县| 岳普湖县| 山东| 丹东市| 渑池县| 获嘉县| 琼结县| 酉阳| 湘阴县| 祁门县| 盖州市| 弥勒县| 丹东市| 镇坪县| 临颍县| 威宁| 大余县| 平远县| 临湘市| 宜兴市| 拜泉县| 鄢陵县| 隆子县| 平舆县| 鸡西市| 芜湖市| 永胜县| 沁水县| 玉屏| 分宜县| 台南县| 扎兰屯市| 永康市| 监利县|