go项目管理 GOPATH与go mod

$GOPATH

  • 允许设置多个路径
  • GOPATYH目录结构
    goWorkSpapce //GOPATH目录
    -- bin //编译可执行文件存放的路径,可自动生成
    -- pkg ///.a中间文件存放路径,可自动生成
    -- src //源码路径

GO get

  • 1.从远程下载需要的包 2.执行go install

GO install

  • 编译生成可执行文件,放在GOBIN路径下,GOBIN默认是在GOPATH/bin文件夹下

  • 如果不用额外方式改变环境变量(公司目前用的是sh脚本编译),是编译不过的。报错:can’t load package: package .: no buildable Go source files in ***

编译问题

  • 问题:多个project会导致多个GOPATH目录,而go优先使用第一个GOPATH目录,会导致编译冲突
  • 解决方法
    • 使用如下目录:多个project或工具组件都放在GOPATH的src下

    • 此时GOBIN可以为空

    • GOPATH目录和GOPATH下的src不应该添加到源代码管理中,而是各个project目录myApp1、myApp2、myApp3各自时独立的进行源代码管理

    • goWorkSpace     // goWorkSpace为GOPATH目录
        -- bin
           -- myApp1  // 编译生成
           -- myApp2  // 编译生成
           -- myApp3  // 编译生成
        -- pkg
        -- src
           -- common 1
           -- common 2
           -- common utils ...
           -- myApp1     // project1
              -- models
              -- controllers
              -- others
              -- main.go 
           -- myApp2     // project2
              -- models
              -- controllers
              -- others
              -- main.go 
           -- myApp3     // project3
              -- models
              -- controllers
              -- others
              -- main.go 
      

go mod包管理

  • 优势:不受GOPATH的限制,可以在任意的文件夹下创建工程
  • 例子:在GoLand中使用go mod模式创建工程,会自动生成go.mod文件,然后就可以正产编译包了

命令行使用方式

  • 设置变量GO111MODULE为on

  • go mod init + projectname:初始化mod

  • go.mod称为模块根,定义了它所在目录为一个模块

  • 使用go build main.go编译

原文地址:https://www.cnblogs.com/szxyx/p/15473004.html