go module本地包導(dǎo)入全過程
go module本地包導(dǎo)入
golang 1.11之后加入了go mod來替代GOPATH
官方文檔參考:https://golang.google.cn/doc/tutorial/call-module-code
啟用go mod
開啟 Go modules
# 臨時(shí)開啟 Go modules 功能 export GO111MODULE=on  # 永久開啟 Go modules 功能 go env -w GO111MODULE=on # 設(shè)置 Go 的國(guó)內(nèi)代理,方便下載第三方包 go env -w GOPROXY=https://goproxy.cn,direct
通過 go env
go env

主項(xiàng)目工作目錄
創(chuàng)建一個(gè)工作目錄
mkdir myapp
新建mod文件
cd myapp go mod init myapp
添加函數(shù)main.go
package main
import (
"fmt"
)
func main(){
fmt.Println("This is main")
}


運(yùn)行
go run main.go

本地module目錄
切換目錄,新建自己的包
cd .. mkdir mypkg go mod init mypkg

包內(nèi)新建hello.go文件
package mypkg
import "fmt"
func SayHello()string{
fmt.Println("hello,(print in mypkg)")
return "success"
}
發(fā)布和使用模塊
當(dāng) main.go 嘗試導(dǎo)入 mydemo.com/mypkg 模塊時(shí),Go 工具鏈會(huì)從本地的 ../mypkg 目錄加載模塊,而不是嘗試從遠(yuǎn)程位置下載
指定包的本地路徑
go mod edit -replace mydemo.com/mypkg=../mypkg

在main.go添加自己的包
package main
import (
"fmt"
my "mydemo.com/mypkg"
)
func main(){
fmt.Println("This is main")
flag :=my.SayHello();
fmt.Println(flag)
}


更新和同步
go mod tidy

查看go mod,已經(jīng)自動(dòng)更新

運(yùn)行
go run main.go

整體目錄結(jié)構(gòu)
└── twogo
├── myapp
│ ├── go.mod
│ └── main.go
└── mypkg
├── go.mod
└── hello.go
整體流程

總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
golang實(shí)現(xiàn)數(shù)組分割的示例代碼
本文主要介紹了golang實(shí)現(xiàn)數(shù)組分割的示例代碼,要求把數(shù)組分割成多個(gè)正整數(shù)大小的數(shù)組,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-12-12
golang中的io.ReadCloser與ioutil.NopCloser使用
這篇文章主要介紹了golang中的io.ReadCloser與ioutil.NopCloser使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-03-03
Go strconv包實(shí)現(xiàn)字符串和基本數(shù)據(jù)類型轉(zhuǎn)換的實(shí)例詳解
在Go語(yǔ)言(Golang)的編程實(shí)踐中,strconv包是一個(gè)非常重要的標(biāo)準(zhǔn)庫(kù),它提供了在基本數(shù)據(jù)類型(如整型、浮點(diǎn)型、布爾型)和字符串之間的轉(zhuǎn)換功能,本文給大家介紹了關(guān)于Go語(yǔ)言字符串轉(zhuǎn)換strconv,需要的朋友可以參考下2024-09-09

