go module导入本地包的方法,以及一些注意点

go module的个人总结

什么是go module

go module是go官方自带的go依赖管理库,在1.13版本正式推荐使用

Go module 构建模式是在 Go 1.11 版本正式引入的,为的是彻底解决 Go 项目复杂版本依赖的问题,在 Go 1.16 版本中,Go module 已经成为了 Go 默认的包依赖管理机制和 Go 源码构建机制。

go module可以将某个项目(文件夹)下的所有依赖整理成一个 go.mod 文件,里面写入了依赖的版本等

使用go module之后我们可不用将代码放置在src下了,module 隐含了一个命名空间的概念,module 下每个包的导入路径都是由 module path 和包所在子目录的名字结合在一起构成。

使用 go module 管理依赖后会在项目根目录下生成两个文件 go.mod 和 go.sum。

如何使用go module导入本地包

1.将GO111MODULE调成on

go env -w GO111MODULE=on    (在终端执行)

2.代码部分

  • 这是我要举例的项目目录结构
D:\goproject\src\gocode\mycode\unit6\demo09\crm\
├── go.mod
├── main.go
└── dbutils/        (只看最后四行就好)
    └── dbutils.go
  • main.go的代码
package main 
//  1.package进行包的声明  建议:包和所在文件夹同名

import (
    "fmt"
    "gocode/mycode/unit6/demo09/crm/dbutils"
    //  从src下面的第一个文件夹的名字开始写
)

//  2.main包是程序的入口包,一般main函数都会放在main包中
//  3.包名是从src/下面开始计算的

func main() {
    fmt.Println("你好,这里是main包")
    dbutils.GetConn() 
    //  4.在函数调用前要先定位到我需要的包(即dbutils)

}

  • dbutils.go的代码
package dbutils

import (
    "fmt"
)

func GetConn() {
    fmt.Println("我现在执行了dbutils包下的GetConn函数")
}

3.go module的依赖部分(go.mod 和 go.sum(go.sum不存在应该是没有外部依赖,不需要校验值之类的吧))

  • 首先,使用cd + 文件路径定位到整个项目的文件夹上,在这里是:

cd D:\goproject\src\gocode\mycode\unit6\demo09\crm

  • 定位后运行 go mod init (这是生成了go.mod的文件,之后会弹出:go: to add module requirements and sums:go mod tidy,也就是要你执行go mod tidy)
  • 执行go mod tidy
  • 最后使用go run main.go来运行程序,下面是运行结果
PS D:\goproject\src\gocode\mycode\unit6\demo09\crm> go run main.go
你好,这里是main包
我现在执行了dbutils包下的GetConn函数
  • 最后要注意一个小坑(不知道是不是都这样),使用vscode运行程序时往往图方便使用扩展Code Runner通过小按钮来运行程序,这是就会报错,我报的错是:src\gocode\mycode\unit6\demo09\crm\tempCodeRunnerFile.go:5:2: package gocode/mycode/unit6/demo09/crm/dbutils is not in GOROOT (D:\go\src\gocode\mycode\unit6\demo09\crm\dbutils),说不在GOROOT中,原因未知,反正我是在这边捣鼓了好久
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值