Go-包管理(管理工具对比及go mod的使用)_go mod add
Proxy,对应GOPROXY环境变量proxy.golang.org,中国无法访问,除非你有梯子。
| 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))
fmt.Println(sub.Sub(a,b,5))
lst := singlelist.New()
lst.PushBack(7)
fmt.Println(lst.Front())
}
这个时候的go.mod就自动添加了模块
你可以在你的GOPATH下找到这个包
运行结果
问题
go mod缓存
参考:go module @latest found but does not contain package
发布自己的go包
创建项目
go mod init “xxx.com/username/packagename”
写代码
添加到本地仓库
本人从事网路安全工作12年,曾在2个大厂工作过,安全服务、售后服务、售前、攻防比赛、安全讲师、销售经理等职位都做过,对这个行业了解比较全面。
最近遍览了各种网络安全类的文章,内容参差不齐,其中不伐有大佬倾力教学,也有各种不良机构浑水摸鱼,在收到几条私信,发现大家对一套完整的系统的网络安全从学习路线到学习资料,甚至是工具有着不小的需求。
最后,我将这部分内容融会贯通成了一套282G的网络安全资料包,所有类目条理清晰,知识点层层递进,需要的小伙伴可以点击下方小卡片领取哦!下面就开始进入正题,如何从一个萌新一步一步进入网络安全行业。
学习路线图
其中最为瞩目也是最为基础的就是网络安全学习路线图,这里我给大家分享一份打磨了3个月,已经更新到4.0版本的网络安全学习路线图。
相比起繁琐的文字,还是生动的视频教程更加适合零基础的同学们学习,这里也是整理了一份与上述学习路线一一对应的网络安全视频教程。
网络安全工具箱
当然,当你入门之后,仅仅是视频教程已经不能满足你的需求了,你肯定需要学习各种工具的使用以及大量的实战项目,这里也分享一份我自己整理的网络安全入门工具以及使用教程和实战。
项目实战
最后就是项目实战,这里带来的是SRC资料&HW资料,毕竟实战是检验真理的唯一标准嘛~
面试题
归根结底,我们的最终目的都是为了就业,所以这份结合了多位朋友的亲身经验打磨的面试题合集你绝对不能错过!
更多推荐
所有评论(0)