Skip to content

Hello World

Hello World 🎉

go
package main

import "fmt"

func main() {
	fmt.Println("Hello World")
}

使用外部包

go
package main

import (
	"fmt"
	"rsc.io/quote"
)

func main() {
	fmt.Println(quote.Go())
}

go中的模块管理

  • go.mod 文件
    • 作用:
      • 模块定义: 明确定义了当前 Go 模块的名称、版本以及对其他模块的依赖关系。
      • 依赖管理: 记录了项目所依赖的所有外部模块,包括模块路径、版本号等信息。
      • 版本控制: 通过 go get 命令自动更新依赖的版本,并记录在 go.mod 文件中。
      • 构建时使用: go build 命令会根据 go.mod 文件中的信息来查找和下载所需的依赖。
  • vendor 文件夹
    • 作用:
      • 本地依赖缓存: 将项目所依赖的外部模块源码下载到本地,形成一个完整的依赖副本。
      • 隔离依赖: 避免了直接依赖全局的 GOPATH,确保项目在不同环境下构建的一致性。
      • 离线开发: 在没有网络的情况下,可以从 vendor 文件夹中获取依赖。
    • 生成方式:
      • 使用 go mod vendor 命令: 自动将 go.mod 中定义的依赖下载到 vendor 文件夹。
  • 两者的关系与区别:
    • 互补: go.mod 文件是项目的依赖清单,而 vendor 文件夹是依赖的实际存储位置。两者共同保证了项目的依赖管理。
    • 优先级: 在 Go 1.11 及以后版本中,go.mod 文件的优先级高于 vendor 文件夹。如果两者存在冲突,以 go.mod 文件为准。
    • 使用场景:
      • go.mod: 适合快速开发、频繁更新依赖的场景。
      • vendor: 适合需要固定依赖版本、离线开发或多人协作的场景。
  • 总结:
    • go.mod 文件 是 Go 模块的配置文件,记录了项目的依赖信息。
    • vendor 文件夹 是项目依赖的本地缓存,用于隔离依赖、保证构建的一致性。
    • 两者共同 构成了 Go 项目的依赖管理机制,为项目的构建和部署提供了可靠保障。
  • 常见问题:
    • 什么时候需要使用 vendor 文件夹?
      • 当项目需要在多个环境中构建时。
      • 当项目依赖的模块版本不稳定时。
      • 当需要进行离线开发时。
    • 如何更新 vendor 文件夹?
      • 使用 go mod tidy 命令来更新 go.mod 文件和 vendor 文件夹。