golang使用go mod导入本地包和第三方包的方式

 更新时间:2024年01月19日 09:51:21   作者:hjxisking  
这篇文章主要介绍了golang使用go mod导入本地包和第三方包的方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

一、本地包和第三方包导入项目时遇到的问题

导入第三方包的方式:

import "github.com/astaxie/beego"

导入本地包的方式:

// 导入本地的一个命名为model的包
import "./model"

这个时候,如果使用go mod方式来管理包依赖,那么beego将正常下载安装并引入,但是本地的model包却会提示找不到

如果不使用go mod方式,并去掉对beego的引用,那么本地model是可以正常引用的

怎么解决?

二、解决办法

使用go mod,在项目目录下执行go mod init demo/v1,创建一个demo/v1的module

本地包的引入方式修改成 

import "demo/v1/model"

如果IDE使用的是goland,那么修改Go > Go Modules(vgo),勾选 Enable Go Modules (vgo) integration,proxy填:https://goproxy.cn,不然IDE无法跟踪到代码步

骤三等同于在终端设置

go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,direct

三、另外在多项目时设置GOPATH

在goland中,可以为本项目设置GOPATH,在 Go > GOPATH 中可以设置 $workdir/demo

项目结构建议

demo/
    .idea/
    bin/
    pkg/
    src/

这样第三方的包会下载到demo/pkg下,源码在src里,src的目录可以作为git仓库管理

总结

在使用go mod的时候,本地包就不能使用相对路径来引用了,需要使用module名字作为前缀,即go mod init 时指定的module名字,可以在go.mod文件中看到

module demo/v1
 
go 1.14
 
require (
	github.com/astaxie/beego v1.12.1 // indirect
	github.com/shiena/ansicolor v0.0.0-20151119151921-a422bbe96644 // indirect
)

最后

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 一篇文章学会GO语言中的变量

    一篇文章学会GO语言中的变量

    Go语言是静态类型语言,因此变量有明确类型的,编译器也会检查变量类型的正确性,下面这篇文章主要给大家介绍了关于GO语言中变量的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2022-07-07
  • GO语言临界资源安全问题的深入理解

    GO语言临界资源安全问题的深入理解

    临界资源安全问题也就是以往我们常听到的线程安全问题,本文详细的介绍了GO语言临界资源安全问题的深入理解,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-12-12
  • 浅析Go常量为什么只支持基本数据类型

    浅析Go常量为什么只支持基本数据类型

    这篇文章主要来和大家一起讨论一下Golang中常量为什么只支持基本数据类型,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起了解一下
    2023-09-09
  • Go defer使用时的两个常见陷阱与避免方法

    Go defer使用时的两个常见陷阱与避免方法

    这篇文章主要将带大家一起深入探讨 Go 1.20 中 defer 的优化机制,并揭示在使用 defer 时需要避免的两个常见陷阱,有需要的可以了解下
    2025-03-03
  • golang中三种线程安全的MAP小结

    golang中三种线程安全的MAP小结

    在Go语言中,Map是并发不安全的,本文主要介绍了golang中三种线程安全的MAP小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-08-08
  • Go语言中的GitOps实战

    Go语言中的GitOps实战

    本文主要介绍了Go语言中的GitOps实战,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2026-04-04
  • Golang之sync.Pool对象池对象重用机制总结

    Golang之sync.Pool对象池对象重用机制总结

    这篇文章主要对Golang的sync.Pool对象池对象重用机制做了一个总结,文中有相关的代码示例和图解,具有一定的参考价值,需要的朋友可以参考下
    2023-07-07
  • Go语言range关键字循环时的坑

    Go语言range关键字循环时的坑

    今天小编就为大家分享一篇关于Go语言range关键字循环时的坑,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • Go语言指针用法详解

    Go语言指针用法详解

    Go指针和C指针在许多方面非常相似,但其中也有一些不同。本文详细讲解了Go语言指针的用法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • 简单高效!Go语言封装二级认证功能实现

    简单高效!Go语言封装二级认证功能实现

    本文将介绍如何使用Go语言封装二级认证功能,实现简单高效的用户认证流程,二级认证是一种安全措施,要求用户在登录后进行额外的身份验证,以提高账户安全性,
    2023-10-10

最新评论