既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Go语言开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
| fetch
| 添加或更新包到本地 vendor 目录 |
| sync
| 本地存在 vendor.json 时候拉去依赖包,匹配所记录的版本 |
| get
| 类似 go get
目录,拉取依赖包到 vendor 目录 |
go mod
- 一个包可以由多个文件组成
- 同一包内不需要导入
配置
GO111MODULE介绍
有三个值:off, on和auto(默认值)。
GO111MODULE=off,go命令行将不会支持module功能,寻找依赖包的方式将会沿用旧版本那种通过vendor目录或者GOPATH模式来查找。
GO111MODULE=on,go命令行会使用modules,而不会去GOPATH目录下查找。
GO111MODULE=auto,默认值,go命令行将会根据当前目录来决定是否启用module功能。这种情况下可以分为两种情形:
当前目录在GOPATH/src之外且该目录包含go.mod文件
当前文件在包含go.mod文件的目录下面
命令
go mod
命令 | 说明 |
---|---|
download | 下载依赖包 |
edit | 编辑go.mod |
graph | 打印模块依赖图 |
init | 初始化一个新模块到当前目录 |
verify | 在当前目录初始化mod |
tidy | 拉取缺少的模块,移除不用的模块 |
vendor | 将依赖复制到vendor下 |
verify | 验证依赖是否正确 |
why | 解释为什么需要依赖 |
使用命令
根目录下生成go.mod文件
go mod init “包名”
使用
GoLand
GOPROXY介绍
Proxy,对应GOPROXY环境变量
proxy.golang.org,中国无法访问,除非你有梯子
goproxy.cn、goproxy.org可以在中国使用,“direct” 是一个特殊指示符,用于指示 Go 回源到模块版本的源地址去抓取(GitHub等),当值列表中上一个 Go 模块代理返回 404 或 410 错误时,Go 自动尝试列表中的下一个,遇见 “direct” 时回源,也就是回到源地址去抓取,而遇见 EOF 时终止并抛出 “invalid version: unknown revision…” 的错误。
项目目录
- add.go中有可导出的函数Add
- plus.go中使用add.go中的函数Add,来展示同一包内不需要导入
- sub.go中使用plus.go中的Plus函数,来展示不同包下如何导入
- Cal.go是入口文件,package后必须是main,同时含有main方法,导入了包plus和sub
代码
add.go
package plus
func Add(a,b int)int{
return a+b
}
plus.go
package plus
func Plus(a,b int)int{
return Add(a,b)
}
相同包直接使用
sub.go
package sub
import "modUse/plus"
func Sub(a,b,c int) int{
return plus.Plus(a,b) - c
}
不同包需要导入
Cal.go
package main
import (
"fmt"
"modUse/plus"
"modUse/sub"
)
func main() {
a := 10
b := 20
fmt.Println(plus.Plus(a,b))
fmt.Println(sub.Sub(a,b,5))
}
main包中导入。使用go mod不用建立main目录,写上package main即可。
运行截图
编译后运行即可,go run 也行。
远程包
go get命令
使用
go get [-d] [-t] [-u] [-v] [-insecure] [build flags] [packages]
配置好代理,Go-常用命令go的使用(build、env、run、fmt等)中讲解env时有代理的设置。
远程包格式如下
- 网站域名:表示代码托管的网站,github、gitee等
- 作者或机构:表明这个项目的归属,一般为网站的用户名。
- 项目名:每个网站下的作者或机构可能会同时拥有很多的项目,图中标示的部分表示项目名称。
我写了一个简单的go包,实现了单链表:Go-如何优雅的实现单链表?(含全部代码)
包的网址为:https://gitee.com/frankyu365/datastructure
最新版
go get example.com/pkg
指定版本
go get example.com/pkg@版本号
删除依赖并降级
go get example.com/mod@none
更新具体的包
go get -d golang.org/x/net
go get选项
选项 | 含义 |
---|---|
-v | 显示操作流程的日志及信息,方便检查错误 |
-u | 下载丢失的包,但不会更新已经存在的包 |
-d | 只下载更新,不安装,安装使用go install |
-insecure | 允许使用不安全的 HTTP 方式进行下载操作 |
我一般使用-u -v参数
go get -u -v gitee.com/frankyu365/datastructure
Cal.go改为
package main
import (
"fmt"
"modUse/plus"
"modUse/sub"
"gitee.com/frankyu365/datastructure/singlelist"
)
func main() {
a := 10
b := 20
fmt.Println(plus.Plus(a,b))
![img](https://img-blog.csdnimg.cn/img_convert/b75afd75b1fca26df342f276973d21a1.png)
![img](https://img-blog.csdnimg.cn/img_convert/206d5c88dd545220d3e12e3a9ccd19bc.png)
**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
**[需要这份系统化的资料的朋友,可以添加戳这里获取](https://bbs.csdn.net/topics/618658159)**
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
lus(a,b))
[外链图片转存中...(img-sw8hiJGN-1715379251353)]
[外链图片转存中...(img-AN5xu10P-1715379251353)]
**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
**[需要这份系统化的资料的朋友,可以添加戳这里获取](https://bbs.csdn.net/topics/618658159)**
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**