golang 包&go mod
go mod#
初始化项目 go mod init#
项目开发中首先要在项目目录中用 go mod 命令生成一个 go.mod 文件管理项目的依赖

自定义包#
自定义包:#
// 自定义包 一定要放在第一行
package calc
/*
定义的方法、变量、结构体等首字母大写表示公有方法,其他包中可以引入该方法
首字母小写表示私有方法,其他包中不能引入,只能在当前包使用
*/
func Sum(x, y int) int {
return x + y
}
引入包:#
package main
// 文件中只引入一个包则是"",引入多个包是("" "")
import (
"fmt"
// 引入golang_7/calc文件夹下的所有包
"golang_7/calc"
)
func main() {
// 使用calc包中的方法,不管calc文件夹下有多少go文件,package是calc则使用calc调用
fmt.Println(calc.Sum(1, 1))
}
-
一个文件夹下面直接包含的文件只能归属一个 package,同样一个 package 的文件不能 在多个文件夹下。
-
包名可以不和文件夹的名字一样,包名不能包含 - 符号
- 比如文件夹A下面的B.go文件 package 声明为C,B文件里方法有D,引入的时候是import "A",引入A文件下所有的包,调用包方法是C.D
-
包名为 main 的包为应用程序的入口包,这种包编译后会得到一个可执行文件,而编译 不包含 main 包的源代码则不会得到可执行文件
给包起别名#
import (
// 给包起别名
f "fmt"
c "golang_7/calc"
)
func main() {
// 通过别名调用 不能再使用原包名
f.Println("123")
c.Sum(1,1)
}
匿名导入包#
// 如果引入包未使用会报错,可以用_ 匿名导入包
import _ "golang_7/calc"
func main() {
}
init()函数#
/* 自定义的包*/
package calc
import "fmt"
// 定义init方法
func init() {
fmt.Printf("init")
}
func Test() {
fmt.Printf("test")
}
package main
// 导入自定义包
import "golang_7/calc"
func main() {
// 先执行init,再执行test
// init实际执行在main方法之前,先执行init,再执行main,调用test
calc.Test()
}
第三方包#
常见的第三方包:https://pkg.go.dev/
#
# 是否开启go mod
export GO111MODULE=auto
-
GO111MODULE=off
go命令行将不会支持module功能,寻找依赖包的方式将会沿用旧版本的通过vendor目录或者GOPATH模式来查找 -
GO111MODULE=on
go命令行会使用modules,不会去GOPATH目录下查找 -
GO111MODULE=auto(默认值)
go命令行将会根据当前目录来决定是否启用module功能。下面两种情形将启用module功能: a. 当前目录在GOPATH/src之外且该目录包含go.mod文件
b. 当前文件在包含go.mod文件的目录下面
# 下载包的国内源环境变量
export GOPROXY=https://goproxy.cn,https://goproxy.io,direct
安装第三方包#
通过go get 下载-全局下载:#
go get 包地址
通过go mod download下载-全局下载:#
包会自动下载到$GOPATH/pkg/mod,多个项目可以共享缓存的 mod,使用 go mod download 的时候首先需要在你的项目里面引入第三方包, GOPATH路径可以通过go env查看
package main
import (
"fmt"
// 在代码中引入第三方包 decimal
"github.com/shopspring/decimal"
)
func main() {
q := decimal.NewFromInt(3)
fmt.Println(q)
}
# 项目路径下
go mod download
go mod vendor#
会将依赖复制到当前项目的 vendor 下,使用 go mod vendor 的时候首先需要在你的项目里面引入第三方包
go mod 命令汇总#
download 下载依赖的module到本地cache
edit 编辑go.mod文件
graph 打印模块依赖图
init 在当前文件夹下初始化一个新的module, 创建go.mod文件
tidy 增加丢失的module,去掉未用的module
vendor 将依赖复制到vendor下,注意依赖需要在import 中声明后才能进行导入
verify 校验依赖
why 解释为什么需要依赖
PS:go get ./... 命令可以查找出当前项目的依赖
风月都好看,人间也浪漫.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
2021-02-22 9.异常
2021-02-22 8.单例模式
2019-02-22 win10操作系统下Android环境配置