go项目使用Go module导入本地包示例

Golang使用go mod 导入本地库 Goland使用go mod 导入本地库 主要分为两种情况:一种是在同一个项目下导入,一种是两个不同项目 我的gopath路径在D:gowork 同一个项目导入 这种情况是不需要改动go.mod文件的 文件结构如下,firsttest目录下一个main.go文件,外加当前文件夹下面的InvokeDir文件夹,文件下面有个invoke.go文件,作为测试用的调用函数 1.go.mod文件,注意module名字为firsttest,这个名字就是module名字 main.go文件内容,可以看到直接用mod 阅读详情

      假设我们现在有moduledemo和mypackage两个包,其中moduledemo包中会导入mypackage包并使用它的New方法。

mypackage/mypackage.go内容如下:

package mypackage

import "fmt"

func New(){
    fmt.Println("mypackage.New")
}

现在分两种情况讨论:(1)同一个项目;(2)不同项目;

(1)同一个项目下

注意:在一个项目(project)下我们是可以定义多个包(package)的。

目录结构

现在的情况是,我们在moduledemo/main.go中调用了mypackage这个包。

moduledemo
├── go.mod
├── main.go
└── mypackage
   └── mypackage.go

导入包

这个时候,我们需要在moduledemo/go.mod中按如下定义:

module moduledemo

go 1.15

然后在moduledemo/main.go中按如下方式导入mypackage

package main

import (
    "fmt"
    "moduledemo/mypackage"  // 导入同一项目下的mypackage包
)
func main() {
    mypackage.New()
    fmt.Println("main")
}

举个例子

假设我们现在有文件目录结构如下:

└── bubble
   ├── dao
   │   └── mysql.go
   ├── go.mod
   └── main.go

其中bubble/go.mod内容如下:

package dao

import "fmt"

func New(){
    fmt.Println("mypackage.New")
}

bubble/main.go内容如下:

package main

import (
    "fmt"
    "github.com/q1mi/bubble/dao"
)
func main() {
    dao.New()
    fmt.Println("main")
}

(2)不 同项目下

 目录结构

├── moduledemo
│   ├── go.mod
│   └── main.go
└── mypackage
   ├── go.mod
   └── mypackage.go

导入包

这个时候,mypackage也需要进行module初始化,即拥有一个属于自己的go.mod文件,内容如下:

module mypackage

go 1.14

然后我们在moduledemo/main.go中按如下方式导入:

import (
    "fmt"
    "mypackage"
)
func main() {
    mypackage.New()
    fmt.Println("main")
}

因为这两个包不在同一个项目路径下,你想要导入本地包,并且这些包也没有发布到远程的github或其他代码仓库地址。这个时候我们就需要在go.mod文件中使用replace指令。

在调用方也就是moduledemo/go.mod中按如下方式指定使用相对路径来寻找mypackage这个包。

module moduledemo

go 1.14

require "mypackage" v0.0.0
replace "mypackage" => "../mypackage"

举个例子

现在有文件目录结构如下:

├── p1
│   ├── go.mod
│   └── main.go
└── p2
   ├── go.mod
   └── p2.go

p1/main.go中想要导入p2.go中定义的函数。

p2/go.mod内容如下:

module xiaoliu.com/q1mi/p2

go 1.14

p1/main.go中按如下方式导入

import (
    "fmt"
    "xiaoliu.com/q1mi/p2"
)
func main() {
    p2.New()
    fmt.Println("main")
}

因为没有把xiaoliu.com/q1mi/p2这个包上传到xiaoliu.com这个网站,我们只是想导入本地的包,这个时候就需要用到replace这个指令了。

p1/go.mod内容如下:

module github.com/q1mi/p1

go 1.14

require "xiaoliu.com/q1mi/p2" v0.0.0
replace "xiaoliu.com/q1mi/p2" => "../p2"

此时,我们就可以正常编译p1这个项目了。

golang相关,包括go mod 使用第三方包和自己本地开发的包 一. 环境配置 go env -w GO111MODULE=on go env -w GOPROXY=https://goproxy.cn,https://goproxy.io,direct 二. go mod 使用 在系统任意目录下建立gomodtest目录,而不需要把gomodtest放到GOPATH目录下。 1. cmd 到当前gomodtest目录下,运行 go mod init gomodtest 2. 建立main文件,内容如下: package ma... 阅读详情

相关推荐

STM32+4G模块+MQTT协议:从零构建稳定可靠的物联网通讯链路

本文详细介绍了如何利用STM32、4G模块和MQTT协议构建稳定可靠的物联网通讯链路。通过硬件选型、AT指令配置和MQTT连接实战,帮助开发者实现低功耗、高可靠性的数据传输,特别适合户外和移动场景应用。

weixin_29191081的博客 333

golang利用go mod巧妙替换使用本地项目的包

拉了两个项目下来,其中一个项目依赖另一个项目,因为改动了被依赖的项目,想重新导入测试一下。

weixin_60208935的博客 2807

11-4 AEB 算法原理及系统组成

本专题旨在探讨如何利用仿真软件开发自动紧急制动系统AEB,主要通过整理开发流程,实现从需求到验证的全流程掌握,为后续开发提供支持;同时,研究了如何在汽车自动驾驶仿真工具中开发自己的算法,并解决了从ISO、E-CNAP、GB/T以及交通法规等提炼出功能需求的问题,以快速实现原型模型的开发。本专题重点讲解了AEB的工作原理、系统/软件架构和需求、算法模型及实现、CCRs/CCRb/CCRm建模与仿真、VRU-AEB-B/P/M建模与仿真,同时还提供了测试用例,期待将AEB算法成功地产品化。

AIgraphX 8547

go module 的本地仓库依赖解决方案(Multi-Module Workspaces)多 module 工作区模式 简介

go在1.18新推出的依赖本地。依赖本地未发布的module。设置了工作区后,所有的配置都会以工作区的配置为最高优先级。go.work文件不需要上传到git仓库,本地使用即可。go.work。

DisMisPres的博客 2656

AI 生成测试报告:从 2 小时到 10 分钟

本文分享了AI在汽车电子测试报告生成中的应用案例。作者以某车企ECU测试项目为例,对比传统报告方式(每天2小时)与AI辅助方式(每天20分钟),效率提升83%。文章详细介绍了测试报告的核心要素(测试概况、结果、问题分析、发布建议)和不同类型报告(日报、周报、总结报告)的特点,并提供了从CANoe导出测试数据的Python解析脚本示例。通过AI自动化处理,大幅减少了测试工程师在报告整理上的时间投入,为汽车电子测试工作提供了实用效率提升方案。

小明的博客 443

OTP/EEPROM 读取与处理

Camera OTP/EEPROM 读取与处理 文章目录Camera OTP/EEPROM 读取与处理1. OTP概念1.1 基本概念1.2 OTP存储类型1.3 OTP烧录信息类型1.4 OTP 作用2. 配置准备2.1 基本认识2.2 OTP/EEPROM配置3. OTP/EEPROM datasheet理解 以及 读取方式3.1 data sheet 内容3.2 一般OTP/EEPROM(e...

Understand-image 1万+

【Go mod 学习之 replace 篇】解决 go 本地依赖、无法拉取依赖、禁止依赖等问题

需要说明的是,正常情况下不需要使用replace来修改版本,最直接的办法是修改require即可,虽然replace也能够做到,但这不是replace的一般使用场景。blog 是应用的入口,main 所在位置,而 article 可以理解为你写的一个公共的库,其中提供了一个函数 Hello()。如果想在你的模块如果想引入你本地其他地方的模块,可以尝试通过 replace 指定目录,而且前提是你的 article 也得 go 的一个模块,而不是按 gopath 下的某个包来引入。

叮当猫的喵i 2万+

FDTD Script命令学习-farfield3d/farfieldux/farfielduy

介绍了farfield3d/farfieldux/farfielduy命令功能,及不同应用语法和参数介绍,以及对官网示例进行介绍。

jxxl_1314的博客 3095

Go项目中使用replace指令实现本地模块替换的解决方案

在Go 1.17及之前版本中,go module机制在处理本地开发模块时体验不够好。为了解决这一问题,可以通过以下步骤让module a引用本地正在开发的module b: 在module a的go.mod文件中手动添加require github.com/user/repo v1.0.0,其中v1.0.0是临时版本号。 使用replace指令将上述require替换为本地module b的路径,格式为replace github.com/user/repo v1.0.0 => module b本地路径。

weixin_44800208的博客 2079

【Bug已解决】openclaw command not found / openclaw not installed — OpenClaw CLI 安装失败解决方案

安装 OpenClaw 后命令未找到或运行失败,本质是 PATH 未配置或 Python 版本不兼容。文中给出修复 PATH、使用虚拟环境、检查 Python 版本、pipx 安装等完整方案。

一键难忘的博客 8064

一步步带你用C#开发Modbus通信上位机(附完整代码与工程思路)

Modbus上位机开发指南(C#实现) 本文详细介绍使用C#开发Modbus上位机系统的全过程,覆盖RTU和TCP两种协议。内容包含:1)需求分析与技术选型(WinForms+NModbus4);2)分层架构设计(UI/业务/通信层);3)通信层核心代码实现(串口/以太网连接、数据读写);4)功能模块开发(设备管理、数据采集、远程控制)。提供可直接复用的Modbus RTU客户端代码示例,包含连接管理、线圈读写、寄存器操作等工业场景必备功能。通过系统化的开发流程,帮助开发者快速构建稳定可靠的Modbus监控

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 817

codeblocks如何导入项目_虽然不推荐,但万一你想要呢?如何使用go module导入本地包...

go module是Go1.11版本之后官方推出的版本管理工具,并且从Go1.13版本开始,go module将是Go语言默认的依赖管理工具。最近Go1.14版本推出之后Go module功能已经被正式推荐在生产环境下使用了。这几天已经有很多教程讲解如何使用go module,以及如何使用go module导入gitlab私有仓库,我这里就不再啰嗦了。最近我发现很多小伙伴在群里问如何使...

weixin_32019949的博客 570

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

go语言导入git包_使用go module导入本地包的方法教程详解

go module 是Go1.11版本之后官方推出的版本管理工具,并且从Go1.13 版本开始,go module 将是Go语言默认的依赖管理工具。到今天Go1.14 版本推出之后Go modules 功能已经被正式推荐在生产环境下使用了。这几天已经有很多教程讲解如何使用go module ,以及如何使用go module 导入gitlab私有仓库,我这里就不再啰嗦了。但是最近我发现很...

weixin_39606137的博客 977

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

使用go module导入本地包的方法教程详解

go module 是Go1.11版本之后官方推出的版本管理工具,并且从Go1.13 版本开始,go module 将是Go语言默认的依赖管理工具。到今天Go1.14 版本推出之后Go modules 功能已经被正式推荐在生产环境下使用了。 这几天已经有很多教程讲解如何使用go module ,以及如何使用go module 导入gitlab私有仓库,我这里就不再啰嗦了。但是最近我发...

taoerchun的专栏 9021

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

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

一、本地包和第三方包导入项目时遇到的问题 导入第三方包的方式: import "github.com/astaxie/beego" 导入本地包的方式: // 导入本地的一个命名为model的包 import "./model" 这个时候,如果使用go mod方式来管理包依赖,那么beego将正常下载安装并引入,但是本地的model包却会提示找不到 如果不使用go mod方式,并去掉...

hjxisking的专栏 2万+

golang导入git包_使用go module导入本地包的方法教程详解

go module 是Go1.11版本之后官方推出的版本管理工具,并且从Go1.13 版本开始,go module 将是Go语言默认的依赖管理工具。到今天Go1.14 版本推出之后Go modules 功能已经被正式推荐在生产环境下使用了。这几天已经有很多教程讲解如何使用go module ,以及如何使用go module 导入gitlab私有仓库,我这里就不再啰嗦了。但是最近我发现很...

weixin_39942335的博客 854

Golang中利用Go Module模式实现导入本地包和外部包及同时解决相对路径的问题

golang中的相对路径

dengpost的博客 1万+

如何使用go module导入本地包

如何使用go module导入本地包 go module是Go1.11版本之后官方推出的版本管理工具,并且从Go1.13版本开始,go module将是Go语言默认的依赖管理工具。到今天Go1.14版本推出之后Go modules 功能已经被正式推荐在生产环境下使用了。 这几天已经有很多教程讲解如何使用go module,以及如何使用go module导入gitlab私有仓库,我这里就不再啰嗦了。但是最近我发现很多小伙伴在群里问如何使用go module导入本地包,作为初学者大家刚开始接触package的时

ywtech的博客 2021

go module本地包导入

go module本地包导入

qq_23858785的博客 1687

go语言导入git包_使用go module导入本地包

go module是Go1.11版本之后官方推出的版本管理工具,并且从Go1.13版本开始,go module将是Go语言默认的依赖管理工具。到今天Go1.14版本推出之后Go modules 功能已经被正式推荐在生产环境下使用了。目前已经有很多教程讲解如何使用go module,以及如何使用go module导入gitlab私有仓库,我这里就不再啰嗦了。最近我发现很多小伙伴在群里问如何使用go ...

weixin_39699070的博客 493

golang 导入自定义包_Go Module 引入本地自定义包

最近由于项目要求,需要对 IPFS 源码进行修改,由于自己在此之前没有接触过 Go 语言,在使用 go mod 导入本地自己开发的工具包的时候折腾了好久才搞定。记录一下,以备后期查阅。Go 语言的 Module 新特性是在 go1.11 的发布之后才支持的,这是 Go 语言新的一套依赖管理系统。文章导读1. 启用 Go Module首先在默认情况下,$GOPATH 默认情况下是不支持 go mud...

weixin_39703926的博客 2221

Golang1.14 go modules 怎么导入本地其它项目的包? 看完这篇文章, 终于搞懂了

相信大家在本地使用go mod开发项目时, 肯定会遇到很多依赖包的问题。因为go mod在最近的1.13中使用了Go GO111MODULE· 模块进行包管理。 设置Go GO111MODULE 有的小伙伴使用过程中肯定非常痛苦,因为不是很熟练, 而且里面还有很多不人性化的设置,网上的资料甚少,都是一篇文章你抄我,我抄你, 查阅大量文章只后无果,一怒之下我决定好好研究一下go mod。 遇到的问题...

普通Gopher 9171

go语言中VScode中如何使用go module导入包,一篇带你学会 ~~~

亲测各种go module的使用方法,都没我写的详细,看到即赚到

weixin_44706683的博客 5657
上一篇: gin框架下参数的自定义验证小示例
下一篇: gin项目运行时找不到包,提示package casbin_test/controler is not in GOROOT 的解决办法
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

php、go编程学习实例

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值