简化 Go 开发:使用强大的工具提高生产力
作为 Go 开发人员,应该都知道维持简洁高效开发工作流程的重要性。为了提高工作效率和代码质量,简化开发流程并自动执行重复性任务至关重要。在本文中,我们将探讨一些强大的工具和技术,它们将简化 Go 开发过程,助力您的编码之旅。
Cookiecutter:使用一致的模板快速启动项目
问题描述
从头开始创建新的 Go 项目通常涉及设置标准项目结构和配置基本文件。此过程可能非常耗时且容易出错。Cookiecutter 通过允许您创建预先配置了所需项目结构、依赖项和设置的项目模板来提供帮助。
要开始使用 Cookiecutter,首先,需要将其安装在您的系统上:
pip install cookiecutter
接下来,在 GitHub 上找到合适的 Go 项目模板或创建自己的模板。例如,您可以使用社区创建的自定义 Cookiecutter Go 模板,该模板提供了基本的 Go 项目结构:
cookiecutter https://github.com/your-username/golang-cookiecutter
Cookiecutter 将提示您输入一些特定于项目的详细信息,例如项目名称、作者和存储库名称。提供信息后,它将创建一个具有所需结构和设置的新项目目录。
自定义模板允许您根据您的特定需求和偏好对其进行定制,从而确保整个团队的项目设置一致。
Air:即时重装,高效开发
每次更改后等待代码编译和运行可能会减慢您的开发过程。Air 是一款很棒的工具,它提供实时重新加载,让您可以立即看到对 Go 代码所做的更改。
要安装 Air,您可以使用go get
go get -u github.com/cosmtrek/air
安装后,在项目目录中创建一个 air.toml
配置文件以指定设置。下面是一个air.toml
基本示例:
# air.toml
root = "."
tmp_dir = "tmp"
build_dir = "tmp/build"
log_dir = "tmp/log"
app_port = 8080
现在,您可以在项目目录中运行 Air
:
air
Air 将监测 Go 文件中的任何更改,并在您保存文件时自动重建和重新启动应用程序。这种即时循环反馈可显著加快开发迭代并提高生产力。
Pre-commit Hooks:强制执行代码质量
保持代码质量对于任何项目都是必不可少的。Pre-commit Hooks 是在每次提交之前运行的脚本,确保您的代码在提交到存储库之前满足特定条件。常见检查包括代码格式设置、检查和运行测试。
要使用 Pre-commit Hooks,您需要在系统上安装 Python 和 Git。首先,使用 pip 安装预提交包:
pip install pre-commit
接下来,将文件添加.pre-commit-config.yaml
到存储库的根目录,以指定要运行的 Pre-commit Hooks:
# .pre-commit-config.yaml
repos:
- repo: https://github.com/golangci/golangci-lint
rev: v1.41.1
hooks:
- id: golangci-lint
在这个例子中,我们使用 golangci-lint hooks 对我们的 Go 文件执行代码检查。
设置配置后,运行以下命令以安装 Pre-commit Hooks:
pre-commit install
现在,每次您尝试提交更改时,Pre-commit Hooks 都会自动运行,检查代码中的任何问题。如果发现任何问题,提交将中止,直到问题得到解决。
自定义 Pre-commit Hooks 存储库:跨项目共享和重用 Hooks
虽然 Pre-commit Hooks 提供了开箱即用的检查,但您可能希望添加特定于项目的自定义检查。要在多个项目之间共享和重用自定义 Hook,您可以创建一个集中的 Pre-commit Hooks 存储库。
首先,创建一个新的 Git 存储库来存储自定义 Hook。在此存储库中,您可以添加您喜欢的任何语言编写的自定义 Hook 脚本。例如,您可以编写一个简单的 bash 脚本来检查项目中的特定条件。
准备好自定义 Hook 后,将存储库添加到项目.pre-commit-config.yaml
:
# .pre-commit-config.yaml
repos:
- repo: https://github.com/your-username/custom-pre-commit-hooks
rev: v1.0.0
hooks:
- id: custom-hook
现在,当运行pre-commit install
时,它将从指定的存储库中获取自定义 Hook,并将其包含在您的提交前检查中。
基于 CLI 的开发:使用自定义命令行界面自动执行任务
命令行界面 (CLI) 是用于自动执行任务和管理复杂项目的强大工具。Cobra 是一个流行的 Go 库,可帮助您轻松构建强大的交互式 CLI。
要安装 Cobra CLI,请运行:
go install github.com/spf13/cobra-cli@latest
安装后,可以使用 Cobra CLI 生成 Cobra 应用程序和命令文件。它简化了搭建应用程序基架的过程,使将 Cobra 合并到 Go 项目中变得更加容易。
要创建新的基于 Cobra 的应用程序,请运行:
cobra-cli init myapp
此命令将生成具有必要文件和结构的基本 Cobra 应用程序。然后,您可以在单独的文件中定义命令及其相应的操作。
例如,要创建 print 问候消息的新命令,可以运行:
cobra-cli add greeting
Cobra CLI 将创建一个具有基本命令结构的新 greeting.go
文件。您可以自定义此文件以实现问候命令的功能。借助 Cobra CLI,您可以快速开发功能丰富的 CLI 应用程序,并自动执行各种任务,从而增强开发工作流程。
结论
简化 Go 开发对于提高生产力和保持代码质量至关重要。通过集成 Cookiecutter 等工具以实现一致的项目模板、用于即时实时重新加载的 Air、用于代码质量检查的 Pre-commit Hooks、用于共享和重用 Hook 的自定义 Pre-commit Hooks 存储库以及用于构建强大命令行界面的 Cobra CLI,您可以显著简化 Go 开发工作流程。
无论您是开始一个新项目还是优化现有项目,采用这些工具和技术无疑将提高开发效率,并使您的 Go 编码之旅更加愉快。使用这些强大的工具,可以将您的 Go 项目简单和高效提升到一个新的水平。
简化 Go 开发:使用强大的工具提高生产力的更多相关文章
- 简化PHP开发的10个工具
本文介绍了可以帮助简化 PHP 开发的11个项目,包括框架,类库,工具,代码. 1. CakePHP Development Framework CakePHP 是一个 PHP 的快速开发框架.它提供 ...
- 简化网站开发:SiteMesh小工具
在一个站点的制备,几乎所有的页面将具有相同的部分.导航栏例如,顶,每一页都是一样的,在底部的版权声明,每一页还都是一样的. 因此,在顶部导航栏的准备.第一种方法是直接复制的所有导航栏的代码,这种方法是 ...
- 如何利用 Visual Studio 自带工具提高开发效率
Visual Stuido 是一款强大的Windows 平台集成开发工具,你是否好好地利用了它呢? 显示行号 有些时候(比如错误定位)的时候,显示行号将有利于我们进行快速定位. 如何显示 1. 工具 ...
- DbUtils是Apache出品一款简化JDBC开发的工具类
DbUtils - DbUtils是Apache出品一款简化JDBC开发的工具类 - 使用DbUtils可以让我们JDBC的开发更加简单 - DbUtils的使用: ...
- 推荐 greenrobot eventbus,简化安卓开发,提高安卓维护性,优化安卓性能
最近在研究移动开发,广泛的阅读有关cordova,apicloud,android资料.发现安卓的开发还是很简单的.再发现greenrobot eventbus开源框架不仅可以简化安卓开发,有可以大幅 ...
- 12款有助于简化CSS3开发的工具
网站开发者能通过CSS3为网站设计增添很多时尚元素,CSS3 对CSS规范做了很大的改进.现在,本文将介绍12款有助于简化CSS3开发的工具. 1.CSS3 Pie: 允许在IE上使用CSS3绝大部 ...
- fir.im Weekly - 17 个提升 iOS 开发效率的必备工具
本期 fir.im Weekly 精选了一些iOS 开发工具和动画源码分享,希望每个开发者能专注效率.实用.灵感. iOS开发工具--如何优化ipa包大小 @iOS程序犭袁 推荐了关于"如 ...
- 工欲善其事,必先利其器 软件工具开发关键词 protractor自动化测试工具 RegexBuddy正则 CodeSmith,LightSwitch:代码生成 CheatEngine:玩游戏修改内存值必备神器 ApkIDE:Android反编译工具 Reflector:反编译dll动态链接库
工欲善其事,必先利其器 本文版权归翟士丹(Stan Zhai)和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利. 原文地址:http ...
- [置顶] 提高生产力:Web开发基础平台WebCommon的设计和实现
Web开发中,存在着各种各样的重复性的工作.为了提高开发效率,不在当码农,我在思考和实践如何搭建一个Web开发的基础平台. Web开发基础平台的目标和功能 1.提供一套基础的开发环境,整合了常用的框架 ...
- [ios2]使用NSOperationQueue简化多线程开发和队列的优先级 【转】
多线程开发是一件需要特别精心的事情,即使是对有多年开发经验的工程师来说. 为了能让初级开发工程师也能使用多线程,同时还要简化复杂性.各种编程工具提供了各自的办法.对于iOS来说,建议在尽可能的情况下避 ...
随机推荐
- Access+Trunk 配置
实验拓扑 实验需求 按图示给各 PC 配置 IP 地址 在SW1和SW2上创建聚合组 PC1 与 PC3 属于 VLAN 10 : PC2 与 PC4 属于 VLAN 20 利用 Access 与 T ...
- API NEWS | Money Lover爆出潜在API漏洞
欢迎大家围观小阑精心整理的API安全最新资讯,在这里你能看到最专业.最前沿的API安全技术和产业资讯,我们提供关于全球API安全资讯与信息安全深度观察. 本周,我们带来的分享如下: Money Lov ...
- SQL Server 2008/2012 完整数据库备份+差异备份+事务日志备份 数据库完整还原(一)
还原方案 数据库级(数据库完整还原) 还原和恢复整个数据库.数据库在还原和恢复操作期间会处于离线状态.SQL SERVER不允许用户备份或还原单个表.还原方案是指从一个或多个备份中还原数据.继而恢复数 ...
- WPF实现新手引导
1. 半透明灰的遮罩层 新建一个遮盖的window窗体 canvas是后期可以在思显示高亮区域 //定义一个window将它的样式设置透明等可以覆盖到其他窗体上,其中遮罩层使用border控件 //原 ...
- 实例讲解Flink 流处理程序编程模型
摘要:在深入了解 Flink 实时数据处理程序的开发之前,先通过一个简单示例来了解使用 Flink 的 DataStream API 构建有状态流应用程序的过程. 本文分享自华为云社区<Flin ...
- 深入分析:恒虚警率检测算法之Switch-CFAR
转发和使用请注明来源,以下为本人精心整理,还请尊重本人劳动成果与产权!由于本人现有知识和能力有限,如存在错误之处请指正!下面为正文内容: 1.S-CFAR检测算法(Switching,开关CFAR) ...
- 使用containerd从0搭建k8s(kubernetes)集群
准备环境 准备两台服务器节点,如果需要安装虚拟机,可以参考<wmware和centos安装过程> 机器名 IP 角色 CPU 内存 centos01 192.168.109.130 mas ...
- HStore表全了解:实时入库与高效查询利器
摘要:本文章将从使用者角度介绍HStore概念以及使用. 本文分享自华为云社区<GaussDB(DWS)HStore表讲解>,作者:大威天龙:- . HStore表简介 面对实时入库和实时 ...
- Python潮流周刊#7:我讨厌用 asyncio
你好,我是猫哥.这里记录每周值得分享的 Python 及通用技术内容,部分为英文,已在小标题注明.(标题取自其中一则分享,不代表全部内容都是该主题,特此声明.) 首发于我的博客:https://pyt ...
- 【论文阅读】Pyramid Scene Parsing Network
解决的问题:(FCN) Mismatched Relationship: 匹配关系错误,如将在水中的船识别为车. Confusion Categories: 模糊的分类,如 hill 和 mounta ...