使用Go Module构建项目 Golang 配置不是这里要讨论的新话题 。但是在Go 1.12发布之后 , 我认为必须重新定义步骤 , 因为项目设置变得比以前简单明了 。
在搜索配置步骤时,除了少数文章之外,大部分内容仍然是分享旧方式 , 即
通过本文,我们将看到项目设置及其发布如何在Go 1.12版本中进行 。
在1.11版本中,Go引入了名为Go Modules的内置包管理,它正在开始进行重大改变Go生态系统 。它是GOPATH的替代品,集成了版本控制和软件包分发支持 。
来自Go博客,
由于1.12版本的Go模块默认启用,GOPATH将在1.13版本中弃用 。
对于那些开始使用Go 1.12的人来说,安装和设置将如下所示 。
安装Go
在Mac上
在Ubuntu上
*从Go 1.8开始 , 将GOPATH设置为环境变量不是必需的 。如果我们没有设置一个,Go使用默认的GOPATH为 $HOME/go
构建项目
让我们在GOPATH之外的首选位置为go项目创建文件夹
初始化模块
使用Go模块初始化项目名称 。
这将创建模块配置文件go.mod,其中包含模块名称和版本 。
此go.mod文件定义Module的根 , go命令将相应地与包一起使用 , 作为GOPATH的替代 。
使用模块
Go模块主要解决以下用例,
依赖管理
让我们使用jsoniter设置简单的json数据生成应用程序 。
该go.mod配置的工作通常喜欢gemfile用Ruby,requirement.txtPython中或其他依赖管理工具,但不完全是 。
构建go时,将根据go代码中的import语句获取最新版本的依赖项,并go.mod使用所需的依赖项更新配置 。
对于我们的示例,go build将获取最新的jsoniter及其依赖项 。
每次go.mod得更新,go build命令创建一个名为的文件,go.sum其中包含特定模块版本内容的预期加密校验和 。
go.sum 不是锁 文件 。它仅用于验证目的 。有关详细信息,请参阅这里 FAQ 。
解决自定义包
让我们创建一个自定义包并验证它是否在没有GOPATH的情况下得到解决 。我创建了一个名为的包handlers
编写一个函数
使用main.go中的自定义包功能,
现在go build解析没有GOPATH的自定义包 。二进制文件将在指定的模块名称中创建go.mod。
让我们执行结果 。
总结
模块系统将帮助我们为Go生态系统提供更好的身份验证和构建速度 。
我为什么放弃Go语言有好几次 , 当我想起来go语言1.12什么时候的时候,总是会问自己:我为什么要放弃Go语言go语言1.12什么时候?这个决定是正确的吗?是明智和理性的吗?其实我一直在认真思考这个问题 。
开门见山地说,我当初放弃Go语言(golang),就是因为两个“不爽”:第一,对Go语言本身不爽;第二,对Go语言社区里的某些人不爽 。毫无疑问,这是非常主观的结论 。转载
1.1 不允许左花括号另起一行
1.2 编译器莫名其妙地给行尾加上分号
1.3 极度强调编译速度,不惜放弃本应提供的功能
1.4 错误处理机制太原始
1.5 垃圾回收器(GC)不完善、有重大缺陷
1.6 禁止未使用变量和多余import
1.7 创建对象的方式太多令人纠结
1.8 对象没有构造函数和析构函数
1.9 defer语句的语义设定不甚合理
1.10 许多语言内置设施不支持用户定义的类型
1.11 没有泛型支持,常见数据类型接口丑陋
1.12 实现接口不需要明确声明
1.13 省掉小括号却省不掉花括号
1.14 编译生成的可执行文件尺寸非常大
1.15 不支持动态加载类库
Golang Windows版本1. 目前支持Windows XPgo语言1.12什么时候的最高版本是 `go version go1.10.7 windows/386`
推荐阅读
- 哪个直播平台城堡便宜,直播平台一个城堡多少人民币
- 新媒体主播现状如何写简介,新媒体环境下播音主持人的发展困境与出路
- 贝亲公众号怎么关注,贝亲查
- qq闪头像制作网站,头像闪字
- go是不是解释型语言 哪些是解释型语言
- 如何经营个电商,如何经营电商赚钱
- 如何营销自己手中的东西,如何销售手里的货
- 8点直播的迷你主播怎么样,迷你主播是什么
- vb.net移动鼠标 vb鼠标移到按钮上事件