欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用go module導(dǎo)入本地包的方法教程詳解

 更新時間:2020年03月01日 11:23:06   作者:Golang  
go module 將是Go語言默認(rèn)的依賴管理工具。到今天 Go1.14 版本推出之后 Go modules 功能已經(jīng)被正式推薦在生產(chǎn)環(huán)境下使用了。本文重點給大家介紹如何使用 go module 導(dǎo)入本地包,感興趣的朋友一起看看吧

go module 是Go1.11版本之后官方推出的版本管理工具,并且從 Go1.13 版本開始, go module 將是Go語言默認(rèn)的依賴管理工具。到今天 Go1.14 版本推出之后 Go modules 功能已經(jīng)被正式推薦在生產(chǎn)環(huán)境下使用了。

這幾天已經(jīng)有很多教程講解如何使用 go module ,以及如何使用 go module 導(dǎo)入gitlab私有倉庫,我這里就不再啰嗦了。但是最近我發(fā)現(xiàn)很多小伙伴在群里問如何使用 go module 導(dǎo)入本地包,作為初學(xué)者大家剛開始接觸package的時候肯定都是先在本地創(chuàng)建一個包,然后本地調(diào)用一下,然后就被卡住了。。。

這里就詳細(xì)介紹下如何使用 go module 導(dǎo)入本地包。

前提

假設(shè)我們現(xiàn)在有 moduledemo 和 mypackage 兩個包,其中 moduledemo 包中會導(dǎo)入 mypackage 包并使用它的 New 方法。

mypackage/mypackage.go 內(nèi)容如下:

package mypackage
import "fmt"
func New(){
 fmt.Println("mypackage.New")
}

我們現(xiàn)在分兩種情況討論:

在同一個項目下

注意:在一個項目(project)下我們是可以定義多個包(package)的。

目錄結(jié)構(gòu)

現(xiàn)在的情況是,我們在 moduledemo/main.go 中調(diào)用了 mypackage 這個包。

moduledemo
├── go.mod
├── main.go
└── mypackage
  └── mypackage.go

導(dǎo)入包

這個時候,我們需要在 moduledemo/go.mod 中按如下定義:

module moduledemo

go 1.14

然后在 moduledemo/main.go 中按如下方式導(dǎo)入 mypackage

package main
import (
 "fmt"
 "moduledemo/mypackage" // 導(dǎo)入同一項目下的mypackage包
)
func main() {
 mypackage.New()
 fmt.Println("main")
}

舉個例子

舉一反三,假設(shè)我們現(xiàn)在有文件目錄結(jié)構(gòu)如下:

└── bubble
    ├── dao
    │   └── mysql.go
    ├── go.mod
    └── main.go

其中 bubble/go.mod 內(nèi)容如下:

module github.com/q1mi/bubble

go 1.14

bubble/dao/mysql.go 內(nèi)容如下:

package dao
import "fmt"
func New(){
 fmt.Println("mypackage.New")
}

bubble/main.go 內(nèi)容如下:

package main

import (
 "fmt"
 "github.com/q1mi/bubble/dao"
)
func main() {
 dao.New()
 fmt.Println("main")
}

不在同一個項目下

目錄結(jié)構(gòu)

├── moduledemo
│   ├── go.mod
│   └── main.go
└── mypackage
    ├── go.mod
    └── mypackage.go

導(dǎo)入包

這個時候, mypackage 也需要進(jìn)行module初始化,即擁有一個屬于自己的 go.mod 文件,內(nèi)容如下:

module mypackage

go 1.14

然后我們在 moduledemo/main.go 中按如下方式導(dǎo)入:

import (
 "fmt"
 "mypackage"
)
func main() {
 mypackage.New()
 fmt.Println("main")
}

因為這兩個包不在同一個項目路徑下,你想要導(dǎo)入本地包,并且這些包也沒有發(fā)布到遠(yuǎn)程的github或其他代碼倉庫地址。這個時候我們就需要在 go.mod 文件中使用 replace 指令。

在調(diào)用方也就是 packagedemo/go.mod 中按如下方式指定使用相對路徑來尋找 mypackage 這個包。

module moduledemo
go 1.14
require "mypackage" v0.0.0
replace "mypackage" => "../mypackage"

舉個例子

最后我們再舉個例子鞏固下上面的內(nèi)容。

我們現(xiàn)在有文件目錄結(jié)構(gòu)如下:

├── p1
│   ├── go.mod
│   └── main.go
└── p2
    ├── go.mod
    └── p2.go

p1/main.go 中想要導(dǎo)入 p2.go 中定義的函數(shù)。

p2/go.mod 內(nèi)容如下:

module liwenzhou.com/q1mi/p2

go 1.14

p1/main.go 中按如下方式導(dǎo)入

import (
 "fmt"
 "liwenzhou.com/q1mi/p2"
)
func main() {
 p2.New()
 fmt.Println("main")
}

因為我并沒有把 liwenzhou.com/q1mi/p2 這個包上傳到 liwenzhou.com 這個網(wǎng)站,我們只是想導(dǎo)入本地的包,這個時候就需要用到 replace 這個指令了。

p1/go.mod 內(nèi)容如下:

module github.com/q1mi/p1
go 1.14
require "liwenzhou.com/q1mi/p2" v0.0.0
replace "liwenzhou.com/q1mi/p2" => "../p2"

此時,我們就可以正常編譯 p1 這個項目了。

說再多也沒用,自己動手試試吧。

總結(jié)

到此這篇關(guān)于使用go module導(dǎo)入本地包的方法教程詳解的文章就介紹到這了,更多相關(guān)go module 導(dǎo)入本地包內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 手把手帶你走進(jìn)Go語言之語法基礎(chǔ)解析

    手把手帶你走進(jìn)Go語言之語法基礎(chǔ)解析

    這篇文章主要介紹了手把手帶你走進(jìn)Go語言之語法基礎(chǔ),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-09-09
  • Go語言學(xué)習(xí)筆記之錯誤和異常詳解

    Go語言學(xué)習(xí)筆記之錯誤和異常詳解

    Go語言采用返回值的形式來返回錯誤,這一機(jī)制既可以讓開發(fā)者真正理解錯誤處理的含義,也可以大大降低程序的復(fù)雜度,下面這篇文章主要給大家介紹了關(guān)于Go語言學(xué)習(xí)筆記之錯誤和異常的相關(guān)資料,需要的朋友可以參考下
    2022-07-07
  • Go語言k8s?kubernetes使用leader?election實現(xiàn)選舉

    Go語言k8s?kubernetes使用leader?election實現(xiàn)選舉

    這篇文章主要為大家介紹了Go語言?k8s?kubernetes?使用leader?election選舉,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10
  • Go語言入門13之runtime包案例講解

    Go語言入門13之runtime包案例講解

    這篇文章主要介紹了Go語言入門runtime包相關(guān)知識,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-05-05
  • Go語言使用net/http實現(xiàn)簡單登錄驗證和文件上傳功能

    Go語言使用net/http實現(xiàn)簡單登錄驗證和文件上傳功能

    這篇文章主要介紹了Go語言使用net/http實現(xiàn)簡單登錄驗證和文件上傳功能,使用net/http模塊編寫了一個簡單的登錄驗證和文件上傳的功能,在此做個簡單記錄,需要的朋友可以參考下
    2023-07-07
  • golang API請求隊列的實現(xiàn)

    golang API請求隊列的實現(xiàn)

    本文主要介紹了golang API請求隊列的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04
  • 超實用的Golang通道指南之輕松實現(xiàn)并發(fā)編程

    超實用的Golang通道指南之輕松實現(xiàn)并發(fā)編程

    Golang?中的通道是一種高效、安全、靈活的并發(fā)機(jī)制,用于在并發(fā)環(huán)境下實現(xiàn)數(shù)據(jù)的同步和傳遞。本文主要介紹了如何利用通道輕松實現(xiàn)并發(fā)編程,需要的可以參考一下
    2023-04-04
  • 使用Go語言構(gòu)建高效的二叉搜索樹聯(lián)系簿

    使用Go語言構(gòu)建高效的二叉搜索樹聯(lián)系簿

    樹是一種重要的數(shù)據(jù)結(jié)構(gòu),而二叉搜索樹(BST)則是樹的一種常見形式,在本文中,我們將學(xué)習(xí)如何構(gòu)建一個高效的二叉搜索樹聯(lián)系簿,感興趣的可以了解下
    2024-01-01
  • Go語言實現(xiàn)的簡單網(wǎng)絡(luò)端口掃描方法

    Go語言實現(xiàn)的簡單網(wǎng)絡(luò)端口掃描方法

    這篇文章主要介紹了Go語言實現(xiàn)的簡單網(wǎng)絡(luò)端口掃描方法,實例分析了Go語言網(wǎng)絡(luò)程序的實現(xiàn)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-02-02
  • go-zero過載保護(hù)源碼解讀

    go-zero過載保護(hù)源碼解讀

    這篇文章主要為大家介紹了go-zero過載保護(hù)源碼解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08

最新評論