简化 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来说,建议在尽可能的情况下避 ...
随机推荐
- Redis系列17:聊聊布隆过滤器(实践篇)
Redis系列1:深刻理解高性能Redis的本质 Redis系列2:数据持久化提高可用性 Redis系列3:高可用之主从架构 Redis系列4:高可用之Sentinel(哨兵模式) Redis系列5: ...
- Tab切换以及倒计时组件封装
1.Tab组件 功能 支持默认选中tab 子元素可以是文本或者图片 自定义tab的数量,并自适应展示 实现方式 用ul > li标签遍历传入的tabs数组参数渲染 判断是否传入背景,未传则显示文 ...
- 基于C语言的泛类型循环队列
循环队列多用于通信数据缓存中,尤其是在双方设备接收数据与处理数据不同步的情况下,使用循环队列先缓存通信数据,然后按照时间戳数据出队作出相应的处理,是一种比较合适的做法,在嵌入式编程中亦是如此.使用循环 ...
- 基于.Net Core实现的飞书文档一键导出服务(支持多系统)
feishu-doc-export 一个支持Windows.Mac.Linux系统的飞书文档一键导出服务,仅需一行命令即可将飞书知识库的全部文档同步到本地电脑.导出速度嘎嘎快,实测700多个文档导出只 ...
- C#中using的三种用法
1. 对命名空间的引用 引入命名空间,在使用类时可以省略复杂的前缀,类似于Java的import. using System.Text; 顺便提一句,C#10新特性支持全局using,如果关键字 gl ...
- Cilium 系列-3-Cilium 的基本组件和重要概念
系列文章 Cilium 系列文章 前言 安装完了,我们看看 Cilium 有哪些组件和重要概念. Cilium 组件 如上所述,安装 Cilium 时,会安装几个运行组件(有些是可选组件), 它们各是 ...
- 解决pandas 读取csv文件报错
使用encoding参数: pd.read_csv(path,sep=",",encoding='utf-16') 注意:该参数之后的编码格式,并不是固定的,需要用记事本打开csv ...
- 医疗知识图谱问答 ——Neo4j 基本操作
前言 说到问答机器人,就不得不说一下 ChatGPT 啦.一个预训练的大预言模型,只要是人类范畴内的知识,似乎他回答得都井井有条,从写文章到写代码,再到解决零散琐碎的问题,不光震撼到我们普通人,就百度 ...
- 好用的css3特性-过渡和2D变换
css3中有很多非常好用的特性,今天来总结一下与动画相关,包括过渡.2D变换. 首先来介绍一下过渡,过渡是在进行变化的时候进行的一个缓冲,如果没有过渡,当变更了元素的位置.大小的数据时,会一瞬间完成变 ...
- ESP32C3 LEDC_PWM
LEDC_PWM LED 控制器 (LEDC) 主要用于控制 LED,也可产生 PWM 信号用于其他设备的控制,ESP32C3有 6 路通道.设置 LEDC 通道分三步完成.与 ESP32 不同 ...