go 学习 (五):包管理

一、设置环境变量

二、启用 go modules 功能 并设置代理

https://goproxy.io/zh/

补充:

  GO111MODULE  有三个值:on、off、auto

  • GO111MODULE=off,go命令行将不会支持module功能,寻找依赖包的方式将会沿用旧版本那种通过vendor目录或者GOPATH模式来查找。
  • GO111MODULE=ongo命令行会使用modules,而一点也不会去GOPATH目录下查找。
  • GO111MODULE=auto,默认值,go命令行将会根据当前目录来决定是否启用module功能。

  modules 功能启用后,依赖包的安装位置在 $GOPATH/pkg 目录下;go mod 提供的命令如下:

三、go mod 命令管理包

  • 在 GOPATH 以为的任意路径下新建项目目录,eg:GOPATH目录为 D:GoCode;项目目录为 D:Project/testProject
  • 进入项目目录,新建目录 bin、src/main,进入 src 目录;注:此处目录可随意。
  • 使用命令:go mod init main,此时生成一个 go.mod  文件;注:go mod init 命令后面也可以跟上文件名称(带后缀)。go.mod文件创建后,它的内容将会被go toolchain全面掌控。go toolchain会在各类命令执行时,比如go get、go build、go mod等修改和维护go.mod文件。
  • 进入 main目录,新建 main.go 文件,写入代码:
package main

import (
    "net/http"
    
    "github.com/labstack/echo"
)

func main() {
    e := echo.New()
    e.GET("/", func(c echo.Context) error {
        return c.String(http.StatusOK, "Hello, World!")
    })
    e.Logger.Fatal(e.Start(":1323"))
}
main.go
  • 使用命令:go run main.go,正常运行的结果如下:

  • go module 安装 package 的原则是先拉最新的 release tag,若无tag则拉最新的commit。 go 会自动生成一个 go.sum 文件来记录 dependency tree。go.mod 文件内容如下

go.moudles 的官方介绍:https://github.com/golang/go/wiki/Modules

go.mod 提供了modulerequirereplaceexclude 四个命令

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

猜你喜欢

转载自www.cnblogs.com/hsmwlyl/p/11776924.html