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
)

最后

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

相关文章

  • 深入理解golang的基本类型排序与slice排序

    深入理解golang的基本类型排序与slice排序

    大家都知道排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。下面就来详细介绍golang的基本类型排序与slice排序,有需要的朋友们可以参考借鉴。
    2016-09-09
  • 详解Golang中的各种时间操作

    详解Golang中的各种时间操作

    这篇文章主要介绍了详解Golang中的各种时间操作,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • Go结合Gin导出Mysql数据到Excel表格

    Go结合Gin导出Mysql数据到Excel表格

    本文主要介绍了Go结合Gin导出Mysql数据到Excel表格,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • Go语言操作mysql数据库简单例子

    Go语言操作mysql数据库简单例子

    这篇文章主要介绍了Go语言操作mysql数据库简单例子,本文包含插入数据和查询代码实例,需要的朋友可以参考下
    2014-10-10
  • 详解Go语言中数组,切片和映射的使用

    详解Go语言中数组,切片和映射的使用

    Arrays (数组), Slices (切片) 和 Maps (映射) 是常见的一类数据结构。这篇文章将为大家详细介绍一下Go语言中数组,切片和映射的使用,感兴趣的可以学习一下
    2022-07-07
  • 使用Go语言实现Yaml编码和解码的方法详解

    使用Go语言实现Yaml编码和解码的方法详解

    在这篇文章中,我们将介绍如何使用Go语言编写代码来实现Yaml编码和解码,文中有详细的代码示例供大家参考,对大家的学习和工作有一定的帮助,需要的朋友可以参考下
    2023-11-11
  • golang的os包用法详解

    golang的os包用法详解

    Go语言的 os 包中提供了操作系统函数的接口,是一个比较重要的包。顾名思义,os 包的作用主要是在服务器上进行系统的基本操作,本文将详细介绍了golang的os包用法,需要的朋友可以参考下
    2023-05-05
  • 使用go实现一个超级mini的消息队列的示例代码

    使用go实现一个超级mini的消息队列的示例代码

    本文主要介绍了使用go实现一个超级mini的消息队列的示例代码,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-12-12
  • 一文带你了解Go语言fmt标准库输入函数的使用

    一文带你了解Go语言fmt标准库输入函数的使用

    这篇文章主要为大家详细介绍了Go语言中 fmt 标准库输入函数的使用,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起了解一下
    2023-01-01
  • Go语言中进行API限流的实战详解

    Go语言中进行API限流的实战详解

    API 限流是控制和管理应用程序访问量的重要手段,旨在防止恶意滥用、保护后端服务的稳定性和可用性,下面我们就来看看如何在Go语言中具体实现吧
    2025-01-01

最新评论