一般来说,正常书写代码是不会遇到所谓的依赖管理的问题

但是,意外就是我改了一下module的名字,然后我就开始了解了一下golang的mod管理

首先我看了一下我本地的目录:

  1. src

    这里存放的是源代码的目录,但是真实情况是,我们写真实的项目并不会像java一样永远只是在src下创建新的项目,而是可以在另外的目录下创建项目,因此个人感觉这个项目是没什么用的,特别是使用了gomod的管理模式以后

  2. pkg

    用于存放编译后的包文件,随着Go模块(Go Modules)的普及,依赖管理变得更加简单,pkg目录的使用也在逐渐减少,因为Go Modules会直接下载依赖到~/go/pkg/mod目录下。

  3. bin

    这个目录用来存放编译后的可执行文件,这个目录不是Go模块系统的一部分,而是项目构建过程中可能产生的输出目录。

  4. SDK

    软件开发工具包,这个其实就是包,对这么理解通俗易懂

    我们可以在go官网下载sdk或者在goland上下载settings->goroot->➕

image-20240808140249488

然后我们基本上会有这么几个名词

  • goroot#

    寻找sdk的路径,goland需要寻找sdk存在在哪里,就需要知道他相应的路径,不然,go的基本关键词啥的都无法被识别

  • gopath#

    它指定了Go工作区的根目录。Go工作区是包含Go代码的目录,它组织了项目的源代码、编译的二进制文件和库文件等

    image-20240808140819436

    我这里的 gopath = user/username/go , 再参照我的上一张图就可以看出,bin/pkg/src是使用gopath导致的,但是我们使用gomod的时候,并不会把项目的源代码放在gopath下

    在Go 1.11之前,依赖管理是通过GOPATH来实现的,但在Go 1.11及以后的版本中,Go引入了go mod,也就是说他基本上被淘汰了

  • gomod#

    开启 module:

    1
    go env -w GO111MODULE=on

    我们开始使用 gomod 来管理第三方库,在GOPATH/pkg/mod文件夹里面

    创建 module:

    1
    go mod init

    然后使用 go get命令就行了,-u 可以为你把依赖更新到最新部分

    • go get

      go get 命令现在主要用于添加、更新或删除 go.mod 文件中的依赖项,只下载包而不进行编译和安装

    • go install

      go install 用于编译并安装指定的包,包括生成的可执行文件。

    • go download

      go mod download 命令用于下载当前模块的依赖项到本地缓存,但不执行安装

    清理整理 module:

    1
    go mod tidy 

    最后的结果:

    1
    2
    3
    4
    5
    module modtest

    go 1.15

    require github.com/gin-gonic/gin v1.5.0

    执行 go download 后会多出一个 go.sum文件,该文件基本上用来记录包版本的关系

总结#

总的来说就是

安装好 sdk — 安装好 goland — 配置好 goroot(一般goland就会给你配好了)

一切🆗