go module本地包导入

go module本地包导入

本文目录

    • go module本地包导入
      • 启用go mod
      • 主项目工作目录
      • 本地module目录
      • 发布和使用模块

golang 1.11之后加入了go mod来替代GOPATH

官方文档参考:https://golang.google.cn/doc/tutorial/call-module-code

启用go mod

  • 开启 Go modules

    # 临时开启 Go modules 功能
    export GO111MODULE=on
    ![请添加图片描述](https://img-blog.csdnimg.cn/direct/3cda800aae2041f98bef026bc274dba3.jpeg)# 永久开启 Go modules 功能
    go env -w GO111MODULE=on# 设置 Go 的国内代理,方便下载第三方包
    go env -w GOPROXY=https://goproxy.cn,direct
    
  • 通过 go env

    go env
    

主项目工作目录

  • 创建一个工作目录

    mkdir myapp
    
  • 新建mod文件

    cd myapp
    go mod init myapp
    
  • 添加函数main.go

    package mainimport ("fmt"
    )func main(){fmt.Println("This is main")
    }
    
  • 运行

    go run main.go
    

本地module目录

  • 切换目录,新建自己的包

    cd ..
    mkdir mypkg
    go mod init mypkg
    
  • 包内新建hello.go文件

    package mypkgimport "fmt"func SayHello()string{fmt.Println("hello,(print in mypkg)")return "success"
    }
    

发布和使用模块

main.go 尝试导入 mydemo.com/mypkg 模块时,Go 工具链会从本地的 ../mypkg 目录加载模块,而不是尝试从远程位置下载

  • 指定包的本地路径

    go mod edit -replace mydemo.com/mypkg=../mypkg
    
  • 在main.go添加自己的包

    package mainimport ("fmt"my "mydemo.com/mypkg"
    )func main(){fmt.Println("This is main")flag :=my.SayHello();fmt.Println(flag)
    }
    

  • 更新和同步

    go mod tidy
    
  • 查看go mod,已经自动更新

  • 运行

    go run main.go
    
  • 整体目录结构

    └── twogo├── myapp│   ├── go.mod│   └── main.go└── mypkg├── go.mod└── hello.go
    
  • 整体流程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/310320.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【模拟电路】常见电子元器件

一、常见电子元器件 二、电阻器 三、电容器 四、电感器 五、电容电感组成LRC振荡电路 六、保险丝、熔断器 七、锂电池 八、接插件 九、蜂鸣器 立创商城_一站式电子元器件采购自营商城-嘉立创电子商城 华秋商城(原"华强芯城")官网_电子元器件采购网_自营现货电子元器…

机器学习库【03】:-NumPy-算术运算

一、说明 与常规数学一样,数组算术本质上是关于加法、减法、乘法和除法。在 中NumPy,此类操作是按元素执行的 [2]: NumPy 是 Numerical Python 的缩写,是 Python 生态系统中一个功能强大的库,它提供对大型多维数组和矩…

Hive集群出现报错信息解决办法

一、报错信息:hive> show databases;FAILED: HiveException java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient 解决办法:1.删除mysql中的元数据库(metastore&#xff0…

C#编程-使用变量

使用变量 请考虑以下场景:您必须创建一个程序,接受来自用户的两个数字并在屏幕上显示着两个数字之和。现在,读取用户提供的数字时,您需要将这些数字存储在内存中的某个位置,以便您能对这些数字执行加操作。您可以使用变量将这些数字存储在内存中。 下图显示了使用变量将…

数据治理:释放数据价值的关键

随着数字化时代的到来,数据已成为组织和企业最重要的资产之一。然而,数据的快速增长和复杂性也给数据管理带来了巨大的挑战。为了确保数据的质量、安全性和合规性,数据治理已成为组织和企业必须面对的重要问题。数据治理是数据要素市场建设的…

MySQL数据库导入100万数据不同方式的性能差异

本文将介绍MySQL数据库导入100万数据的三种方式性能比较。 三种方式分别为: (1)逐条INSERT (2)批量INSERT提交 (3)通过mysql自带的load data命令 应用场景:假设需要向100万个号码…

【MySQL】事务Transaction

1. 事务的概念 事务是什么 在业务逻辑中使用sql,面对一些较复杂的场景,是需要多个sql语句组合起来实现的。如:银行的转账业务,若客户A要转账100元给客户B,就要两条sql:A余额减100,B余额加100&a…

手拉手Springboot获取yml配置文件信息

环境介绍 技术栈 springboot3 软件 版本 mysql 8 IDEA IntelliJ IDEA 2022.2.1 JDK 17 Spring Boot 3.1.7 配置文件说明:启动配置文件优先级:properties高于yml 配置文件application.yml yml是 JSON 的超集,简洁而强大&#xf…

[Angular] 笔记 24:ngContainer vs. ngTemplate vs. ngContent

请说明 Angular 中 ngContainer, ngTemplate 和 ngContent 这三者之间的区别。 chatgpt 回答: 这三个在 Angular 中的概念是关于处理和组织视图的。 1. ngContainer: ngContainer 是一个虚拟的 HTML 容器,它本身不会在最终渲染…

YOLOv8改进 | 2023注意力篇 | EMAttention注意力机制(附多个可添加位置)

一、本文介绍 本文给大家带来的改进机制是EMAttention注意力机制,它的核心思想是,重塑部分通道到批次维度,并将通道维度分组为多个子特征,以保留每个通道的信息并减少计算开销。EMA模块通过编码全局信息来重新校准每个并行分支中…

Axure骚操作:【制作可暂停与不可暂停进度加载条】

目录 一、不可暂停进度条 1.1 前期准备 1.2 效果假想 1.3 适用场景 1.4 实现步骤 (1)除按钮外的元件设置隐藏 (2)给按钮添加交互 (3)给变量值文本标签添加交互 (4)给进度条矩…

DrGraph原理示教 - OpenCV 4 功能 - 颜色空间

前言 前段时间,甲方提出明确需求,让把软件国产化。稍微研究了一下,那就转QT开发,顺便把以前的功能代码重写一遍。 至于在Ubuntu下折腾QT、OpenCV安装事宜,网上文章很多,照猫画虎即可。 这个过程&#xff0…