zoukankan      html  css  js  c++  java
  • go mod使用

    GO111MODULE 有三个值:off, on和auto(默认值)

    • GO111MODULE=off,go命令行将不会支持module功能,寻找依赖包的方式将会沿用旧版本那种通过vendor目录或者GOPATH模式来查找。
    • GO111MODULE=on,go命令行会使用modules,而一点也不会去GOPATH目录下查找。
    • GO111MODULE=auto,默认值,go命令行将会根据当前目录来决定是否启用module功能。这种情况下可以分为两种情形:
      • 当前目录在GOPATH/src之外且该目录包含go.mod文件
      • 当前文件在包含go.mod文件的目录下面

    依赖包存储位置

    • 使用go get获取的包放在$GOPATH/src/目录下
    • 使用go mod下载的依赖包放在$GOPATH/pkg/mod/目录下,所有项目共享

    Go version<1.13

    linux下
    export GO111MODULE=on
    win下
    set GO111MODULE=on
    

    Go version >= 1.13

    go env -w GOPROXY=https://goproxy.cn,direct
    
    go env -w GO111MODULE=on
    

    win下已经设置为on了重复设置报错的话,可通过set GO111MODULE=on

    goland设置识别go mod

    在goland的setting里设置启用Go Modules
    goland Preference->Go->Go Modules(vgo) -> Enable Go Modules(vgo)intergration
    
    没使用go mod时
    GOPATH/
          /bin
          /pkg
          /src/
              /main.go
              /hello/test.go
    

    main.go

    package main
    
    import "test"
    
    func main() {
    	test.Say()
    }
    
    

    test.go

    package hello
    
    import "fmt"
    
    func Say()  {
    	fmt.Println("hello test")
    }
    

    使用go mod

    go mod init gomod
    
    

    生成go.mod

    module gomod
    
    go 1.13
    

    main.go

    package main
    
    import (
    	"gomod/hello"
    )
    
    func main() {
    	hello.Say()
    }
    

    go.mod 提供了module, require、replace和exclude 四个命令

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

    server.go

    D:wamp64wwwgomod>go run server.go
    go: downloading github.com/labstack/echo v3.3.10+incompatible
    go: extracting github.com/labstack/echo v3.3.10+incompatible
    go: finding golang.org/x/crypto latest
    省略....
    go: finding golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3
    
       ____    __
      / __/___/ /  ___
     / _// __/ _ / _ 
    /___/\__/_//_/\___/ v3.3.10-dev
    High performance, minimalist Go web framework
    https://echo.labstack.com
    ____________________________________O/_______
                                        O
    ⇨ http server started on [::]:1323
    
    

    查看go.mod 内容

    module gomod
    
    go 1.13
    
    require (
    	github.com/labstack/echo v3.3.10+incompatible // indirect
    	github.com/labstack/gommon v0.3.0 // indirect
    	golang.org/x/crypto v0.0.0-20191112222119-e1110fd1c708 // indirect
    )
    
    

    go module 安装 package 的原則是先拉最新的 release tag,若无tag则拉最新的commit,详见 Modules官方介绍。 go 会自动生成一个 go.sum 文件来记录 dependency tree:

    go.sum

    github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
    github.com/labstack/echo v3.3.10+incompatible h1:pGRcYk231ExFAyoAjAfD85kQzRJCRI8bbnE7CX5OEgg=
    省略.....
    gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
    
    
    • 可以使用命令 go list -m -u all 来检查可以升级的package,
      使用go get -u need-upgrade-package 升级后会将新的依赖版本更新到go.mod
    • 也可以使用 go get -u 升级所有依赖
  • 相关阅读:
    正则表达式
    HashTable与HashMap的区别
    求解连续子数组乘积的最大值
    求解N个值中最大的k个数,N远大于k
    C++权限修饰符
    DBSCAN算法
    【leetcode】1318. Minimum Flips to Make a OR b Equal to c
     【leetcode】1317. Convert Integer to the Sum of Two No-Zero Integers
    【leetcode】1316. Distinct Echo Substrings
    【leetcode】1315. Sum of Nodes with Even-Valued Grandparent
  • 原文地址:https://www.cnblogs.com/HKUI/p/11876988.html
Copyright © 2011-2022 走看看