[GoLang避坑实战-15] Go Module 救命指南:彻底告别依赖冲突和环境混乱

大家好,我是极客老墨。 Go 1.11 之前,依赖管理是个大麻烦。GOPATH 要求所有代码放在固定目录,vendor 目录管理混乱,dep 工具又不够成熟。Go Modules 的出现彻底解决了这些问题,现在已经是官方标准方案。 这篇就聊聊 Go Modules,看看它是怎么管理依赖的。 Go Modules 是什么 Go Modules 是 Go 的依赖管理系统,解决了三个核心问题。 核心功能 1// go.mod 文件示例 2module github.com/username/myproject 3 4go 1.21 5 6require ( 7 github.com/gin-gonic/gin v1.9.1 8 gorm.io/gorm v1.25.5 9) 解决的问题: 版本管理:明确指定每个依赖的版本 可重现构建:不同环境构建结果一致 依赖隔离:不同项目可以使用同一个包的不同版本 与 GOPATH 的区别 1# GOPATH 时代(痛苦) 2export GOPATH=$HOME/go 3cd $GOPATH/src/github.com/username/project 4# 所有项目共享依赖,版本冲突频繁 5 6# Go Modules 时代(简单) 7mkdir myproject 8cd myproject 9go mod init github.com/username/myproject 10# 每个项目独立管理依赖 初始化模块 创建新项目时,第一步就是初始化模块。 ...

2025-06-06 · 9 min · 1878 words · 老墨

Rust 学习笔记 11:包与模块 (Packages & Modules)

Rust 学习笔记 11:包与模块 (Packages & Modules) “Organization is what you do before you do it, so that when you do it, it’s not all mixed up.” – A. A. Milne 欢迎来到 2025 年! 在完成了前 10 章的基础语法学习后,我们现在的 Rust 代码全都写在一个 main.rs 里。这对于写个猜数字游戏还行,但要写大项目,文件组织是必修课。 Rust 的模块系统 (Module System) 有点复杂,甚至被称为"新手劝退三大难"之一(另外俩是所有权和生命周期)。 1. 家族谱系:Package, Crate, Module 首先要分清三个概念: Package (包):Cargo 的功能单元。包含 Cargo.toml。一个 Package 可以包含多个 Binary Crate,但只能有一个 Library Crate。 Crate (箱):编译单元。main.rs 是二进制 Crate 的根,lib.rs 是库 Crate 的根。 Module (模块):代码组织单元。用 mod 关键字定义。 层级关系:Package -> (contains) -> Crates -> (contains) -> Modules。 ...

2025-02-06 · 2 min · 243 words · 老墨