golang 的fmt 包实现了格式化I/O函数,类似于C的 printf 和 scanf。 # 定义示例类型和变量 type Human struct { Name string
顺晟科技
2021-06-16 10:27:07
361
Go模块是Go1.11之后推出的官方版本管理工具,从Go1.13开始,Go模块将成为Go语言默认的依赖管理工具。自今天Go1.14发布以来,Go模块功能已被正式推荐用于生产环境。
这几天已经有很多关于如何使用go模块和如何使用go模块导入gitlab私有仓库的教程了,这里就不赘述了。不过最近发现群里很多朋友问怎么用go模块导入本地包?作为初学者,刚接触包的时候,首先要在本地创建一个包,然后在本地调用,然后卡住。
在这里,我们将详细介绍如何使用go模块导入本地包。
先决条件
假设我们有两个包,moduledemo和mypackage,其中mypackage包将被导入到moduledemo包中,并将使用它的New方法。
mypackage/mypackage.go的内容如下:
打包mypackage
导入“fmt”
func New(){
fmt。Println('mypackage。新')
}
我们现在讨论两种情况:
在同一项目下
注意:我们可以在一个项目下定义多个包。
目录结构
目前我们在moduledemo/main.go中调用mypackage.
moduledemo
go.mod
去大街
我的包裹
我的包裹,去吧
导入包
此时,我们需要在moduledemo/go.mod中对其进行如下定义:
模块moduledemo
go 1.14
然后在moduledemo/main中导入mypackage
包装总管
导入(
“fmt”
module demo/mypackage//在同一项目下导入my package包
)
func main() {
我的包裹。新()
fmt。Println('main ')
}
例如
以此类推,假设我们现在有如下的文件目录结构:
泡沫
岛
mysql.go
go.mod
去大街
bubble/go.mod的内容如下:
github.com/q1mi/bubble模块
go 1.14
Bubble/dao/mysql.go如下:
打包刀
导入“fmt”
func New(){
fmt。Println('mypackage。新')
}
Bubble/main.go如下:
包装总管
导入(
“fmt”
github.com/q1mi/bubble/dao '
)
func main() {
道。新()
fmt。Println('main ')
}
不在同一个项目下
目录结构
莫代德莫
go.mod
main.go
我的包裹
go.mod
我的包裹,去吧
导入包
这时mypackage也需要模块初始化,也就是有自己的go.mod文件,如下:
模块mypackage
go 1.14
然后我们在moduledemo/main中导入它。
导入(
“fmt”
“mypackage”
)
func main() {
我的包裹。新()
fmt。Println('main ')
}
因为这两个包不在同一个项目路径下,所以您希望导入本地包,并且这些包不会发布到远程github或其他代码仓库地址。此时,我们需要在go.mod文件中使用replace命令。
在调用者,即moduledemo/go.mod中,指定使用相对路径来查找mypackage,如下所示。
模块moduledemo
go 1.14
需要“my package”v 0 . 0 . 0
替换“my package”=”./mypackage '
例如
最后,我们再举一个例子来巩固上面的内容。
我们现在有如下的文件目录结构:
p1
go.mod
main.go
p2
go.mod
p2.go
P1/main.go想导入p2.go中定义的函数.
P2/go.mod内容如下:
liwenzhou.com/q1mi/p2模块
go 1.14
P1/main.go导入如下
导入(
“fmt”
liwenzhou.com/q1mi/p2 '
)
func main() {
p2。新()
fmt。Println('main ')
}
因为我没有把liwenzhou.com/q1mi/p2的包上传到liwenzhou.com的网站上,我们只想导入本地包,所以此时需要使用replace命令。
P1/go.mod内容如下:
github.com/q1mi/p1模块
go 1.14
需要' liwenzhou.com/q1mi/p2' v0.0.0
替换为' liwenzhou.com/q1mi/p2'='./p2 '
此时,我们可以正常编译p1项目。
多说无益。自己试试。
28
2021-08
28
2021-08
28
2021-08
28
2021-08
16
2021-06
16
2021-06