简化 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-lintrev: v1.41.1hooks:- 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-hooksrev: v1.0.0hooks:- 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 项目简单和高效提升到一个新的水平。
 

参考链接:
https://medium.com/@joloiuy/simplify-go-development-boost-your-productivity-with-powerful-tools-14ad4bc311b3

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/146150.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Mybatis 二级缓存(使用Redis作为二级缓存)

上一篇我们介绍了mybatis中二级缓存的使用,本篇我们在此基础上介绍Mybatis中如何使用Redis作为二级缓存。 如果您对mybatis中二级缓存的使用不太了解,建议您先进行了解后再阅读本篇,可以参考: Mybatis 二级缓存https://blog.csd…

Codeforces Round 894 (Div. 3) D(数学题好难不会)

题目链接:Codeforces Round 894 (Div. 3) D 题目: 特马决定提高自己制作冰淇淋的技能。他已经学会了如何用两个球把冰淇淋做成圆锥形。 在痴迷冰淇淋之前,特马对数学很感兴趣。因此,他很想知道要制作完全n个不同类型的冰淇淋&am…

Linux 基本语句_4_指针和函数

指针函数 顾名思义&#xff0c;即返回值为指针的函数 int * f (int n){int *p NULL;//空指针return p;//返回一个地址 }函数指针 指向函数的指针&#xff0c;每个函数都有自己的入口地址&#xff0c;函数指针专门指向这些地址#include <stdio.h>int max(int a, int b)…

前端任意修改地图风格颜色

在做地图相关应用时&#xff0c;常常遇到地图风格与UI界面不搭配的问题&#xff0c;如果在制图时就制作多种风格的地图&#xff0c;耗时耗力&#xff0c;超出成本控制。这里推荐一种快捷的方法&#xff0c;可在前端快速更改地图成任意风格&#xff0c;使色调与UI搭配。 先上一张…

【sql注入】如何通过SQL注入getshell?如何通过SQL注入读取文件或者数据库数据?一篇文章告诉你过程和原理。sql注入【二】

前言 本篇博客主要是通过piakchu靶场来讲解如何通过SQL注入漏洞来写入文件&#xff0c;读取文件。通过SQL输入来注入木马来getshell等&#xff0c;讲解了比较详细的过程&#xff1b; 如果想要学习SQL注入原理以及如何进行SQL注入&#xff0c;我也写了一篇详细的SQL注入方法及…

Apache Flume

Flume 1.9.0 Developer Guide【Flume 1.9.0开发人员指南】 Introduction【介绍】 摘自&#xff1a;Flume 1.9.0 Developer Guide — Apache Flume Overview【概述】 Apache Flume is a distributed, reliable, and available system for efficiently collecting, aggregati…

编程每日一练(多语言实现)基础篇:求总数问题

文章目录 一、实例描述二、技术要点三、代码实现3.1 C 语言实现3.2 Python 语言实现3.3 Java 语言实现3.4 JavaScript 语言实现 一、实例描述 集邮爱好者把所有的邮票存放在三个集邮册中&#xff0c;在A册内存放全部的十分之二&#xff0c;在B册内存放不知道是全部的七分之几&…

win11+wsl+git+cmake+x86gcc+armgcc+clangformat+vscode环境安装

一、安装wsl &#xff08;1&#xff09;打开power shell 并运行&#xff1a; Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform &#xff08;2&#xff0…

pytorch第一天(tensor数据和csv数据的预处理)lm老师版

tensor数据&#xff1a; import torch import numpyx torch.arange(12) print(x) print(x.shape) print(x.numel())X x.reshape(3, 4) print(X)zeros torch.zeros((2, 3, 4)) print(zeros)ones torch.ones((2,3,4)) print(ones)randon torch.randn(3,4) print(randon)a …

基于Java的汽车票网上预订系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09;有保障的售后福利 代码参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作…

jenkins+newman+postman持续集成环境搭建

一、Newman简介 Newman是一款基于Node.js开发的&#xff0c;可以运用postman工具直接从命令运行和测试postman集合 二、Newman应用 环境准备&#xff1a;js/ cnpm或npm配置好环境&#xff0c;执行如下命令 三、安装newman 验证是否安装成功&#xff0c;命令&#xff1a;newm…

模块化CSS

1、什么是模块化CSS 模块化CSS是一种将CSS样式表的规则和样式定义封装到模块或组件级别的方法&#xff0c;以便于更好地管理、维护和组织样式代码。这种方法通过将样式与特定的HTML元素或组件相关联&#xff0c;提供了一种更具可维护性、可复用性和隔离性的方式来处理样式。简单…

上机实验一 顺序表的基本操作和简单程序 西安石油大学数据结构

上机一 实验名称&#xff1a;顺序表的基本操作和简单程序 题目&#xff1a;设计一个有序顺序表&#xff0c;实现以下操作&#xff1a; 1.将元素x插入表中并保持有序&#xff1b; 2.查找值为x的元素&#xff0c;若找到则将其删除&#xff1b; 3.输出表中所有元素。 要求&a…

腾讯云 Cloud Studio 实战训练营结营活动获奖公示

点击链接了解详情 “腾讯云 Cloud Studio 实战训练营” 是由腾讯云联合 CSDN 推出的系列开发者技术实践活动&#xff0c;通过技术分享直播、动手实验项目、优秀代码评选、有奖征文活动等&#xff0c;让广大开发者沉浸式体验腾讯云开发者工具 Cloud Studio 的同时&#xff0c;实…

云畅科技TMS解决方案助力华菱线缆实现智能货运管理

9月26日下午&#xff0c;湖南华菱线缆股份有限公司TMS物流系统上线启动会成功举办&#xff0c;由云畅科技倾力打造的华菱线缆TMS物流系统正式上线运行&#xff0c;标志着湖南华菱线缆股份有限公司在智能化物流货运管理领域的一次重大突破。 湖南华菱线缆股份有限公司董事兼总经…

【设计模式】六、建造者模式

文章目录 需求介绍角色应用实例建造者模式在 JDK 的应用和源码分析java.lang.StringBuilder 中的建造者模式 建造者模式的注意事项和细节 需求 需要建房子&#xff1a;这一过程为打桩、砌墙、封顶房子有各种各样的&#xff0c;比如普通房&#xff0c;高楼&#xff0c;别墅&…

【C语言次列车ing】No.1站---C语言入门

文章目录 前言一、什么是C语言二、第一个C语言程序三、数据类型四、变量、常量五、字符串转义字符注释 前言 &#x1f467;个人主页&#xff1a;小沈YO. &#x1f61a;小编介绍&#xff1a;欢迎来到我的乱七八糟小星球&#x1f31d; &#x1f4cb;专栏&#xff1a;C语言次列车i…

【笔试强训day02】倒置字符串 排序子序列

​&#x1f47b;内容专栏&#xff1a; 笔试强训集锦 &#x1f428;本文概括&#xff1a;C笔试强训day02。 &#x1f43c;本文作者&#xff1a; 阿四啊 &#x1f438;发布时间&#xff1a;2023.10.1 二、day02 1.倒置字符串 题目描述&#xff1a; 将一句话的单词进行倒置&…

手动实现BERT

本文重点介绍了如何从零训练一个BERT模型的过程&#xff0c;包括整体上BERT模型架构、数据集如何做预处理、MASK替换策略、训练模型和保存、加载模型和测试等。 一.BERT架构   BERT设计初衷是作为一个通用的backbone&#xff0c;然后在下游接入各种任务&#xff0c;包括翻译…

《MySQL高级篇》十六、主从复制

文章目录 1、主从复制概述1.1 如何提升数据库并发能力1.2 主从复制的作用 2、主从复制的原理2.1 原理剖析2.2 复制的基本原则 3、一主一从架构搭建3.1 准备工作3.2 主机配置文件3.3 从机配置文件3.4 主机&#xff1a;建立账户并授权3.5 从机&#xff1a;配置需要复制的主机3.6 …