go 包引用
go 包引用
go版本升级
说真的,go如果想换版本,直接卸载删干净重新安装好
go环境官网: https://golang.google.cn/dl/
环境变量设置
我先前装过一次go,环境变量设置的乱七八糟,最后自己都崩溃了,索性重新梳理下环境变量
win10在D盘下创建一个go的文件夹,然后在go这个文件下创建两个子文件夹,goroot和gopath
用goland进入D盘
创建GOMOD的go.mod
cd D:\go\goroot
go mod init goland
go mod tidy
然后设置环境变量,win10搜索环境变量,编辑环境变量
对于已经有的属性,点击编辑,没有的属性点击新建
GOCACHE D:\go\go-build
GOENV D:\go\env
GOMOD D:\go\goroot\go.mod
GOMODCACHE D:\go\goroot\pkg\mod
GOPATH D:\go\gopath
GOPROXY https://goproxy.cn,direct
GOROOT D:\go\goroot
GOTOOLDIR D:\go\goroot\pkg\tool\windows_amd64
最后重启goland,然后执行go env确认
创建项目
go mod管理工程,用来创建初始化项目
* go mod init $module_name #$module_name是模块名
* $module_name 和目录名可以不一样
go mod init day1
#执行完后,在当前目录就会生成一个go.mod文件
module day1 #这里的day1就是上面的module_name
go 1.17 #go的版本
常见命令
去除依赖
go mod tidy
# 通过扫描当前项目中的所有代码来添加未被记录的依赖,
# 到go.mod文件或从go.mod 文件中删除不再被使用的依赖
包的引入规则
go get下载的第三方依赖存放在$GOPATH/pkg/mod下
go install生成的可执行文件存放在$GOPATH/bin下
依赖包的查询顺序:
1.工作目录
2.$GOPATH/pkg/mod
3.$GOROOT/src
依次从当前项目,GOROOT,GOPATH下寻找依赖包:
- 首先从当前go文件所在的目录逐级向上查找go.mod文件(假设go.mod位于目标$mode_path下里面定义了module_name,则引入包的路径为module_name/包相对于$mode_path)
- 然后,标准库提供的包在$GOROOT/src下
- 最后第三方依赖包在$GOPATH/pkg/mod下
GOROOT指的是go的安装目录,go的编译器、标准库等都存放在这个目录下
GOPATH指的是项目的开发目录,存在三个目录结构,分别是src、pkg、bin目录
包的声明
go文件的第一行声明 package xxx。
在包声明的上面可写关于包的注释,包注释也可以专门写在doc.go里。
包名跟目录名可以不同。
同一个目录下,所有go文件的包名必须一致。
包的引用
可以直接使用同目录下其他go文件里的变量、函数、结构体。
跨目录使用则需要变量前加入包名,并且引入包所在的目录。
imoprt "go-course/package" //go-course是model名,package是目录名
mypackage.Add() //mypackage是包名,它对应的目录是package
在import块里可以引用父目录,也可以引用子目录。
引用关系不能构成一个环。
在import的目录前面可以给包起一个别名。
imoprt asd "go-course/package"
asd.Add()
导入多个依赖包
import(
“fmt”
“os”
)
相对路径导包
import ./module1
绝对路径导包
加载 $GOPATH/src/shorturl/model 模块
import shorturl/model
点操作
直接导入 model 下的所有函数以及变量 然后 fmt.Print() 可以简写成
Print()
import (
. "fmt"
)
别名操作
import (
f1 "fmt"
)
_空引入 操作
不引入包中的任何变量以及函数,
只是为了执行,model 中的 init 函数
import (
_ "kiki/test"
)
导入自定义的包
新建 mymodel
cd mymodel
go mod init kiki/mymodel
新建文件夹dir1
在新建的main1中
import (
"kiki/mymodel/dir1"
)
包管理
从go1.17版本开始
go get只负责下载第三方依赖包,并把它加到go.mod文件里,由go install负责安装二进制文件
-
go env -w GO111MODULE=on 设置环境变量
-
go env -w GOPROXY=https://goproxy.cn,direct 设置七牛云代理,否则因为网络原因下载不来
-
go env -w GOPROXY=https://mirrors.aliyun.com/goproxy/,direct ,也可以设置阿里云代理
-
go get github.com/mailru/easyjson会在 GOPATH/pkg/mod 目录下生成github.com/mailru/easyjson目录
-
go install github.com/mailru/easyjson/easyjson会在 GOPATH/bin 下生成easyjson二进制可执行文件
go mod tidy通过扫描当前项目中的所有代码来添加未被记录的依赖至go.mod文件或从go.mod文件中删除不再被使用的依赖
工程管理
go工程每次几乎都需要以下内容
go mod init $module_name
import package_name $module_name/relative_path
package_name.variable
go mod tidy
go build -o exe_file path/to/main
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!