• GO常用命令记录


    一. Windows安装Go

    Go语言中文网下载go的安装包
    在这里插入图片描述
    下载完成之后,一直Next,选择安装路径,Finish!

    查看环境变量Path,最后面会自动添加一个*****\Go\bin的目录,就说明安装没问题了!

    go version #查看go版本
    在这里插入图片描述

    二. GOROOT、GOPATH、GOMOD

    参考:GOPATH、GOROOT、GOMOD彻底搞懂golang的GOROOT和GOPATH详解GOROOT和GOPATH

    1. 配置Go的两个基础环境变量,GOROOT、GOPATH

    在这里插入图片描述

    2. GOROOT:Go安装目录的绝对路径

    在这里插入图片描述
    这个目录下面也有src, bin, pkg三个文件夹,import内置包的时候,并不需要额外安装,当程序运行时,会先去GOROOT下找相应的包来运行

    3. GOPATH:项目存放路径,保存go项目代码和一些第三方依赖包

    GOPATH 可以设置多个,其中,第一个将会是默认的包目录,使用 go get 下载的包都会在第一个path中的src目录下,使用 go install时,在哪个GOPATH中找到了这个包,就会在哪个GOPATH下的bin目录生成可执行文件;

    • GOPATH之下主要包含三个目录:bin/pkg/src
      • bin目录主要存放可执行文件
      • pkg目录主要存放编译好的库文件,主要是*.a文件
      • src目录主要存放go的源文件
    • 缺点
      • 当我们的第三方包不是官方库时都要放在GOPATH/src下才可以使用, 不同的项目采用的第三方库是不同的版本go1.11以前是要设置多组不同的GOPATH

    4. GOPMOD:包管理工具

    • Golang1.11版本新引入的官方包管理工具,用于解决之前没有地方记录依赖包具体版本的问题

    4.1. 开启gomod, go env -w GO111MODULE=auto,下载下来的第三方库就在GOPATH/pkg/mod文件夹里面

    • auto
      当存在 go.mod 文件时, 其行为均会等同于于 GO111MODULE=on;
      当处于 GOPATH 内且没有 go.mod 文件存在时其行为会等同于 GO111MODULE=off;
    • on
      即使项目在您的 GOPATH 中,GO111MODULE = on 仍将强制使用 Go 模块。需要 go.mod 正常工作
    • off
      强制 Go 表现出 GOPATH 方式,即使在 GOPATH 之外。

    4.2. 项目可以存放在任意位置(以下为GOPATH的目录)

    • 执行go mod init module_name, 初始化模块,module_name可填可不填,不填的话就是采用项目文件夹的名称,会在项目根目录下生成一个go.mod的文件

    • 假设我要引入github.com/gin-gonic/gin v1.5.0这个包,在go.mod中添加require github.com/gin-gonic/gin v1.5.0,然后运行go mod download即可!会生成一个和go.mod同级目录的文件go.sum,也可以不执行go mod download而直接运行go build或者go install也会自动下载包
      在这里插入图片描述

    • 如果不想自己修改go.mod,也可以直接用require指定版本,执行go get指令

      go get github.com/gin-gonic/gin@v1.6.3

      只要有开启gomod功能,go get就不会再把包放在src下的package,而是会放在/pkg/mod里面,并且mod会写好引入。也就不需要go mod download了

    4.3 go.mod文件中module、require、replace和exclude 四个命令解析

    • module:指令用于声明当前模块的名称,即模块的导入路径
      # 这个指令指定了当前模块的导入路径为 example.com/myproject
      module example.com/myproject
      
      • 1
      • 2
    • require:指令用于声明项目所依赖的其他模块及其版本
      # 指定项目依赖的两个模块 example.com/dependency 和 example.com/anotherdependency,分别需要的版本为 v1.2.3 和 v2.0.1
      require (
          example.com/dependency v1.2.3
          example.com/anotherdependency v2.0.1
      )
      
      • 1
      • 2
      • 3
      • 4
      • 5
    • replace:指令用于替换依赖模块的版本或导入路径。在开发过程中可能会用到,例如用本地修改的代码替换远程依赖库
      # 将依赖模块 example.com/dependency 的导入路径替换为本地路径 ../my/local/dependency
      replace example.com/dependency => ../my/local/dependency
      
      • 1
      • 2
    • exclude:指令用于排除特定版本的依赖模块。这在解决依赖冲突或避免使用某些不兼容版本时非常有用例如:
      # 指定排除依赖模块 example.com/dependency 的版本 v1.2.3
      exclude example.com/dependency v1.2.3
      
      • 1
      • 2

    4.4 go mod命令详解

    • go mod download:下载项目中的所有依赖包。它会检查 go.mod 文件并下载缺失的依赖项。
    • go mod edit:用于编辑 go.mod 文件,可以添加、移除或更新依赖项。例如,可以使用 go mod edit -require [package]@[version] 来添加指定版本的依赖项。
    • go mod graph:生成一个文本表示的模块依赖关系图。如果想要可视化的模块依赖关系图,你可以使用第三方工具,如:Graphviz 。
    • go mod init:在当前目录初始化一个新的模块,并指定模块路径。这个命令会生成一个新的 go.mod 文件。
    • go mod tidy:清理项目中未使用的依赖项。它会根据项目代码的实际使用情况来更新 go.mod 文件,并移除不再需要的依赖项。
    • go mod vendor:将依赖项复制到项目的 vendor 目录中,以便离线使用。这个命令会创建 vendor 目录并将所有依赖项复制到该目录下。
    • go mod verify:验证项目的依赖项的完整性。它会检查依赖项的哈希值,确保其内容没有被篡改。
    • go mod why:查询某个依赖项被引入的原因。可以使用 go mod why [package] 来查找指定包的引入原因。

    一些其他相关命令:

    • go get -u [package]:更新依赖。该命令用于更新指定的依赖包到最新版本。
    • go get [package]:添加依赖。该命令用于添加指定的包作为依赖,并自动更新 go.mod 文件和下载依赖包。
    • go list -m all:查看依赖。该命令用于查看当前模块的所有依赖关系。

    三. 其他配置

    1. go env #查询go的环境配置信息

    • GOBIN:存放可执行文件的目录的绝对路径
      当我们使用go install命令编译和打包应用程序时,该命令会将编译后二进制程序打包GOBIN目录,一般我们将GOBIN设置为GOPATH下的bin目录。
    • GOTOOLDIR:Go工具目录的绝对路径
    • GOCACHE:go缓存目录
      可以使用 go clean -cache 清空,如果目录变得很大的话
      *GOENV:GO全局环境变量
    • GOMODCACHE:go mod进行包管理时的缓存目录
      一般为GOPATH下的pkg下的mod目录
    • GOPROXY:代理
    • GOTOOLDIR:GO工具的安装目录
      有cgo.exe等
    • GOVERSION:go的版本号

    2. 设置代理

    # 设置`GOPROXY`的值为`https://goproxy.cn,direct`(不能设置操作系统环境变量)
    go env -w GOPROXY=https://goproxy.cn,direct
    
    • 1
    • 2

    在这里插入图片描述

    恢复默认值

    # 将`GOPROXY`恢复为默认值 
    go env -u GOPROXY
    
    • 1
    • 2

    在这里插入图片描述

    Loading…

  • 相关阅读:
    如何让页面跳转更丝滑
    2023-mac rz sz 安装
    使用frp搭建内网穿透服务
    【算法 | 模拟No.5】leetcode 74. 搜索二维矩阵
    网络安全(黑客)自学
    Redis数据结构详解
    技术突破,解决natapp免费域名动态变化问题
    Web前端大作业—— 饮食餐饮网站 咖啡网站pc端带轮播(5个页面)HTML+CSS+JavaScript 学生美食网页设计作品 学生餐饮文化网页模板
    idea启动非maven javaWeb项目,idea打包非maven javaWeb项目
    我的世界Bukkit服务器插件开发教程(十)实体
  • 原文地址:https://blog.csdn.net/qq_35401605/article/details/127764449