Go语言:包管理基础知识

起因是,遇到一个问题:

Go语言:包管理基础知识

经查阅资料,很可能跟包管理有关,之前有了解过忘了就再学一遍顺便解决问题。

学习资料:

所谓包管理,比如软件包管理,方便进行软件安装,升级,卸载等一些操作;
Go语言程序中经常会引入其他的package来使用;

Go语言刚开始是并没有包管理相关功能,实现 import <packages></packages>时:

  • 我理解是:早期需要啥包,就手动go get什么。
  • go get 命令:会根据路径,把相应的模块获取并保存在 $GOPATH/src

Go Modules

Go 1.11 引入 Go Modules后:

  • GO111MODULE = off:强制使用GOPATH 方式;
  • GO111MODULE = on:强制使用 Go Modules
  • GO111MODULE = auto:
  • 当存在 go.mod 文件时或处于 GOPATH 外, 相当于 GO111MODULE=on。
  • 相当于 Go 1.13 下你可以将所有的代码仓库均不存储在 GOPATH 下。
  • 当项目目录处于 $GOPATH 内,且没有 go.mod 文件存在时,相当于 GO111MODULE=off。
  • 使用 Go Modules 时,在 go build 期间使用的包存储在 $GOPATH/pkg/mod 中(而不是GOPATH的 $GOPATH/src中)。
  • 执行 go run xxx.go 运行代码会发现 go mod 会自动查找依赖自动下载。

到这以后,会考虑到 go.mod这个从哪里来,是自己手动创建么?接着学习 go mod;

go mod命令

Go mod 命令是实现 Go Modules的工具;就相当于 go getGOPATH的关系;

go mod 命令参数:

Go语言:包管理基础知识

图片来源:go mod使用 – 简书 (jianshu.com);常用的是 init, tidy, edit

初始化一个项目;

go mod init xxx

xxx与package名字无关;只是给当前项目用的模块(modules)一个名字;
go.mod文件一旦创建后,它的内容将会被go toolchain全面掌控。go toolchain会在各类命令执行时,比如go get、go build、go mod等修改和维护go.mod文件。
同时还生成了 go.sum 其中包含软件包的哈希值,以确保我们具有正确的版本和文件。

go.mod 提供了module, require、replace和exclude 四个go.mod内的关键字:

  • module 语句指定包的名字(路径)
  • require 语句指定的依赖项模块
  • replace 语句可以替换依赖项模块
  • exclude 语句可以忽略依赖项模块

解决问题

1 确认 GO111MODULE=on:确认了无数次,不仅zsh里配置了,bash里面也配置了;

但用 go list是,依旧出现了如下报错,配置的 GO111MOUDLE=on未生效。

Go语言:包管理基础知识
go env -w GO111MODULE=on

这样之后就好了。

所以我就有一个疑问了,为什么bash配置文件中添加的 GO111MODULE=on 没生效?

macos,我只用zsh,zshrc中添加了,也source了;甚至bash_profile,profile也都添加了;为什么go env中还需要再设置一遍?很奇怪!

Original: https://www.cnblogs.com/kphang/p/15828097.html
Author: KpHang
Title: Go语言:包管理基础知识

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/516464/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • go更新腾讯云DNSPod的解析记录

    纯粹练手用的,大家轻喷 获取SecretId,SecretKey 打开腾讯云,登录之后打开 https://console.cloud.tencent.com/cam/capi,然…

    Go语言 2023年5月25日
    068
  • Go语言 context包源码学习

    你必须非常努力,才能看起来毫不费力!微信搜索公众号[ 漫漫Coding路 ],一起From Zero To Hero ! 日常 Go 开发中,Context 包是用的最多的一个了,…

    Go语言 2023年5月25日
    072
  • install go 环境

    GoSDK安装 下载 GO SDK wget https://golang.google.cn/dl/go1.17.3.linux-amd64.tar.gz tar xfv go1…

    Go语言 2023年5月25日
    065
  • golang初探

    最近两天对go语言做了一个初步的了解,记录一下。之前没有按照原创发表,所以重新发布一次。 第一个感受就是使用起来方便,从官网下载安装包,参考https://golang.googl…

    Go语言 2023年5月25日
    077
  • DDIA 学习笔记

    第一章 可靠性、可扩展性、可维护性 ​ 可靠性: 系统在 困境(adversity)(硬件故障、软件故障、人为错误)中仍可正常工作(正确完成功能,并能达到期望的性能水准。 ​ 可靠…

    Go语言 2023年5月25日
    082
  • Go – 如何编写 ProtoBuf 插件(二)?

    上篇文章《Go – 如何编写 ProtoBuf 插件 (一) 》,分享了使用 proto3 的 &#x81EA;&#x5B9A;&#x4E49;…

    Go语言 2023年5月25日
    061
  • GO语言常用时间工具类 timeUtil.go

    package util import “time” /*获取时间戳(纳秒)Testner 20210123/func GetTime_UnixNano()…

    Go语言 2023年5月29日
    077
  • B树-查找

    B树系列文章 1. B树-介绍 2. B树-查找 3. B树-插入 4. B树-删除 查找 假设有一棵3阶B树,如下图所示。 下面说明在该B树中查找 52的过程 首先,从根结点出发…

    Go语言 2023年5月25日
    067
  • 将百度万年历存入自己的数据库

    前言 最近有需要研究阴历和阳历互相转换的问题。因此找到两个库carbon和solarlunar但是感觉计算出来的总是不太放心,而且也会占用计算资源。我的想法是通过接口获取现成的阴历…

    Go语言 2023年5月25日
    070
  • Go编译过程

    一、 Go编译流程 二、过程说明 词法解析 读取Go源文件,将字符序列转换为符号(token)序列,比如将”:=”转换为_Define 代码中的标识符、关键…

    Go语言 2023年5月25日
    066
  • 【Docker】使用Docker Client和Docker Go SDK为容器分配GPU资源

    深度学习的环境配置通常是一项比较麻烦的工作,尤其是在多个用户共享的服务器上。虽然conda集成了virtualenv这样的工具用来隔离不同的依赖环境,但这种解决方案仍然没办法统一地…

    Go语言 2023年5月25日
    076
  • Maglev : A Fast and Reliable Software Network Load Balancer (using Consistent Hashing)

    前言(为什么想读这一篇论文) 这一篇论文吸引我注意的原因是,Consistent Hashing ;本来的特性就是作为分布式缓存之用。谷歌将他们的负载均衡器(代号:Maglev)发…

    Go语言 2023年5月25日
    063
  • 基于LSM的Key-Value数据库实现初篇

    前篇文章对LSM的基本原理,算法流程做了简单的介绍,这篇文章将实现一个简单的 基于LSM算法的 迷你Key-Value数据库,结合上篇文章的理论与本篇文章的实践使之对LSM算法有更…

    Go语言 2023年5月25日
    078
  • Go语言之接口

    接口就是一系列方法的集合(规范行为) 在面向对象的领域里,接口一般这样定义:接口定义一个对象的行为,规范子类对象的行为。 在 Go 语言中的接口是非侵入式接口(接口没了,不影响代码…

    Go语言 2023年5月25日
    063
  • Go语言之高级篇Beego框架之爬虫项目实战

    一、爬虫项目 1、爬虫基础 a、网页上面会有相同的数据 b、去重处理 布隆过滤器哈希存储 c、标签匹配: 正则表达式beautiful soup或lxml这种标签提取库 d、动态内…

    Go语言 2023年5月29日
    061
  • 系统调用跟踪——分析(一)

    通过strace工具可跟踪用户进程与Linux内核的调用交互,可看到其中的System Call(系统调用)情况; &#x5B89;&#x88C5;strace&a…

    Go语言 2023年5月25日
    097
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球