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

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

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

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

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

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

前提

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

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

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

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

在同一個(gè)項(xiàng)目下

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

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

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

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

導(dǎo)入包

這個(gè)時(shí)候,我們需要在 moduledemo/go.mod 中按如下定義:

module moduledemo

go 1.14

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

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

舉個(gè)例子

舉一反三,假設(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")
}

不在同一個(gè)項(xiàng)目下

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

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

導(dǎo)入包

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

module mypackage

go 1.14

然后我們?cè)?nbsp;moduledemo/main.go 中按如下方式導(dǎo)入:

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

因?yàn)檫@兩個(gè)包不在同一個(gè)項(xiàng)目路徑下,你想要導(dǎo)入本地包,并且這些包也沒(méi)有發(fā)布到遠(yuǎn)程的github或其他代碼倉(cāng)庫(kù)地址。這個(gè)時(shí)候我們就需要在 go.mod 文件中使用 replace 指令。

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

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

舉個(gè)例子

最后我們?cè)倥e個(gè)例子鞏固下上面的內(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")
}

因?yàn)槲也](méi)有把 liwenzhou.com/q1mi/p2 這個(gè)包上傳到 liwenzhou.com 這個(gè)網(wǎng)站,我們只是想導(dǎo)入本地的包,這個(gè)時(shí)候就需要用到 replace 這個(gè)指令了。

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"

此時(shí),我們就可以正常編譯 p1 這個(gè)項(xiàng)目了。

說(shuō)再多也沒(méi)用,自己動(dòng)手試試吧。

總結(jié)

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

相關(guān)文章

  • Go panic和recover函數(shù)使用細(xì)節(jié)深入探究

    Go panic和recover函數(shù)使用細(xì)節(jié)深入探究

    這篇文章主要為大家介紹了Go?的panic和recover函數(shù)使用細(xì)節(jié)深入探究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12
  • golang簡(jiǎn)單位運(yùn)算示例

    golang簡(jiǎn)單位運(yùn)算示例

    這篇文章主要介紹了golang簡(jiǎn)單位運(yùn)算,包括位移運(yùn)算、取反及位與位或等運(yùn)算,需要的朋友可以參考下
    2016-07-07
  • Go語(yǔ)言Goroutinue和管道效率詳解

    Go語(yǔ)言Goroutinue和管道效率詳解

    這篇文章主要為大家介紹了Go語(yǔ)言Goroutinue和管道效率使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • 詳解Go語(yǔ)言各種常見(jiàn)類型的默認(rèn)值和判空方法

    詳解Go語(yǔ)言各種常見(jiàn)類型的默認(rèn)值和判空方法

    本文主要介紹了詳解Go語(yǔ)言各種常見(jiàn)類型的默認(rèn)值和判空方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • go語(yǔ)言yaml轉(zhuǎn)map、map遍歷的實(shí)現(xiàn)

    go語(yǔ)言yaml轉(zhuǎn)map、map遍歷的實(shí)現(xiàn)

    本文主要介紹了go語(yǔ)言yaml轉(zhuǎn)map、map遍歷的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • GO語(yǔ)言并發(fā)編程之互斥鎖、讀寫鎖詳解

    GO語(yǔ)言并發(fā)編程之互斥鎖、讀寫鎖詳解

    這篇文章主要介紹了GO語(yǔ)言并發(fā)編程之互斥鎖、讀寫鎖詳解,本文是GO并發(fā)編程實(shí)戰(zhàn)一書的樣章,詳細(xì)講解了互斥鎖、讀寫鎖,然后給出了一個(gè)完整示例,需要的朋友可以參考下
    2014-11-11
  • Go如何實(shí)現(xiàn)Websocket服務(wù)以及代理

    Go如何實(shí)現(xiàn)Websocket服務(wù)以及代理

    這篇文章主要介紹了Go如何實(shí)現(xiàn)Websocket服務(wù)以及代理方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • golang不到30行代碼實(shí)現(xiàn)依賴注入的方法

    golang不到30行代碼實(shí)現(xiàn)依賴注入的方法

    這篇文章主要介紹了golang不到30行代碼實(shí)現(xiàn)依賴注入的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-07-07
  • go?mod?tidy報(bào)錯(cuò):zip:?not?a?valid?zip?file解決辦法

    go?mod?tidy報(bào)錯(cuò):zip:?not?a?valid?zip?file解決辦法

    這篇文章主要給大家介紹了關(guān)于go?mod?tidy報(bào)錯(cuò):zip:?not?a?valid?zip?file的解決辦法,go mod是進(jìn)行代碼管理,這錯(cuò)誤是因?yàn)楸镜胤种Ш瓦h(yuǎn)程分支沖突,本文通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-01-01
  • Golang HTML 模板使用指南示例詳解

    Golang HTML 模板使用指南示例詳解

    本文詳細(xì)介紹了Golang HTML模板的使用方法,包括基礎(chǔ)模板、高級(jí)模板、完整應(yīng)用示例、CSS樣式、JavaScript交互等,文章強(qiáng)調(diào)了模板組織、代碼復(fù)用、語(yǔ)義化HTML、響應(yīng)式設(shè)計(jì)、性能優(yōu)化等最佳實(shí)踐,感興趣的朋友跟隨小編一起看看吧
    2025-01-01

最新評(píng)論

汝南县| 连南| 罗城| 阿荣旗| 卢氏县| 四会市| 习水县| 西贡区| 博罗县| 永吉县| 阿拉尔市| 澜沧| 贵港市| 德昌县| 龙口市| 高阳县| 耒阳市| 龙江县| 扎鲁特旗| 泸西县| 奈曼旗| 蒲城县| 武平县| 措美县| 长泰县| 探索| 福清市| 桃园市| 辽源市| 获嘉县| 个旧市| 司法| 惠安县| 丁青县| 曲阳县| 江山市| 宣汉县| 兴文县| 淳化县| 酒泉市| 濉溪县|