2024年Go最新Go-包管理(管理工具对比及go mod的使用)_go mod add,2024年最新2024Golang大厂面试题来袭

img
img
img

既有适合小白学习的零基础资料,也有适合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行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

  • 28
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值