zoukankan      html  css  js  c++  java
  • Golang的module模式下项目组织结构

    golang的最新项目管理推荐采用module模式。

    一、go mod命令使用详解

    1.golang版本 go的module管理模式在golang 1.11版本后才能够使用。

    2.环境变量的设置 要使用golang的module项目管理模式,需要设置对应的环境变量GO111MODULE的值,该变量有三种类型,如下:

    1)GO111MODULE=auto 此为默认值,在此模式下,如果代码在gopath下,则自动使用gopath模式;如果代码不在gopath下,则自动使用GO mod模式。这种情况下可以分为两种情形:

    (1)当前目录在GOPATH/src之外且该目录包含go.mod文件

    (2)当前文件在包含go.mod文件的目录下面。

    2)GO111MODULE=on 此模式下,项目不再使用GOPATH,直接采用module模式管理项目,go命令行会使用modules,而一点也不会去GOPATH目录下查找。

    3)GO111MODULE=off 此模式下,go命令行将不会支持module功能,寻找依赖包的方式将会沿用旧版本那种通过vendor目录或者GOPATH模式来查找。。

    3.各命令的使用

    go mod download //下载依赖包 
    go mod edit //edit go.mod from tools or scripts 编辑go.mod 
    go mod graph //打印模块依赖图
    go mod init //initialize new module in current directory 在当前目录初始化mod
    go mod tidy //拉取缺少的模块,移除不用的模块。
    go mod vendor //将依赖复制到vendor下
    go mod verify //verify dependencies have expected content 验证依赖是否正确
    go mod why //解释为什么需要依赖

    二、module的目录结构

    projectName
    |---main.go
    |---mypack1
             |---a.go
             |---b.go
    |---mypack2
             |---c.go
             |---d.go
    |---go.mod
    |---go.sum
    |---vendor
             |---github.com/...
             |---golang.org/...

    注意,利用go mod init命令初始化时的module名字要与main.go中引入时的一致。例如:

    go mod init projectName

    则在main.go中要如此引用:

    package main
    
    import (
        "projectName/mypack1"
        "projectName/mypack2"
    )
    
    func main() {
    ...
  • 相关阅读:
    洛谷 P1032 子串变换
    RCTF 2017 easyre153
    SUCTF 2016 : dMd
    南邮 base64全家桶
    洛谷 P1908 逆序对
    2019中山大学程序设计竞赛 Triangle
    WhiteHat Contest 11 : re1100
    P1010 幂次方
    洛谷 P1088 火星人
    南邮 骚年来一发吗
  • 原文地址:https://www.cnblogs.com/merrynuts/p/14451403.html
Copyright © 2011-2022 走看看