当前位置: 首页 > news >正文

Golang Gin系列-2:搭建Gin 框架环境

开始网络开发之旅通常是从选择合适的工具开始的。在这个全面的指南中,我们将引导你完成安装Go编程语言和Gin框架的过程,Gin框架是Go的轻量级和灵活的web框架。从设置Go工作空间到将Gin整合到项目中,本指南是高效而强大的web开发路线图。

安装Go语言

在我们深入安装过程之前,根据开发需求选择正确的Go版本至关重要。访问Go官方网站(https://golang.org/dl/)下载最新的稳定版本。下面几个环境变量需要正确设置
在这里插入图片描述

GOROOT

  • 含义:它指定了 Go 语言的安装目录。这个目录包含了 Go 编译器、标准库等核心组件。例如,在 Go 1.18 版本的安装目录下,你可以找到 src(包含 Go 语言标准库的源代码)、pkg(编译后的包文件存放位置)和 bin(Go 工具链的可执行文件,如 gogofmt 等)等子目录。

  • 作用:当你执行 Go 相关的命令时,系统会根据 GOROOT 来找到 Go 的核心组件。例如,go build 命令构建程序时,会从 GOROOT 下的标准库中引用必要的库文件。

  • 设置示例(以 Linux 为例):如果 Go 安装在 /usr/local/go,你可以通过以下方式设置 GOROOT

export GOROOT=/usr/local/go

GOPATH

  • 含义GOPATH 是 Go 工作区的路径,它是一个或多个目录的路径列表。在早期的 Go 版本中,这是一个非常重要的环境变量。GOPATH 下包含三个主要的子目录:srcpkgbinsrc 用于存放 Go 源代码,pkg 用于存放编译后的包文件,bin 用于存放可执行文件。

  • 作用:它为 Go 项目提供了统一的工作空间。例如,当你使用 go get 命令下载外部依赖包时,这些包会被放置到 GOPATH/src 目录下;当你构建自己的 Go 项目时,项目的源代码也可以存放在 GOPATH/src 下。

  • 设置示例(以 Windows 为例):假设你想将GOPATH 设置为 C:\Go\workspace,你可以通过以下步骤设置:

    1. 打开系统的环境变量设置窗口。
    2. 在 “用户变量” 或 “系统变量” 中添加一个名为 GOPATH 的变量,其值为 C:\Go\workspace

GOBIN

  • 含义GOBIN 用于指定 Go 二进制文件(可执行文件)的安装目录。
  • 作用:当你使用 go install 命令安装 Go 程序时,生成的可执行文件会被放置到 GOBIN 指定的目录中。这有助于组织和管理 Go 生成的可执行文件。
  • 设置示例(以 Linux 为例):如果想将 Go 二进制文件安装到 ~/go/bin,可以设置 GOBIN 如下:
export GOBIN=~/go/bin
  • 创建Go项目

使用‘ go mod ’命令为项目初始化新的go模块。这有助于管理依赖关系并促进与其他开发人员的协作。

建议开发环境为:WSL+VSCode,具体环境搭建过程再次略过。

安装Gin Framework

  • Gin框架概述

Gin是一个面向Go的高性能web框架,提供路由、中间件支持等功能。让我们探讨一下为什么Gin是Go web开发的热门选择。通过下面命令安装Gin, 将Gin导入到Go项目中来确认安装。

$ go install github.com/gin-gonic/gin@latest

在这里插入图片描述

下面创建一个简单的Gin应用程序,让我们使用Gin构建一个基本的web应用程序来理解它的核心概念。然后设置路由器,定义路由和处理程序来处理传入的HTTP请求。

package mainimport "github.com/gin-gonic/gin"func main() {router := gin.Default()router.GET("/", func(c *gin.Context) {c.JSON(200, gin.H{"message": "Hello, Gin!",})})router.Run(":8080")
}

执行Gin应用程序并在web浏览器中访问它。下面我们在Gin中添加中间件,通过集成中间件来增强Gin应用程序的功能,如日志记录、身份验证等。

package mainimport ("github.com/gin-gonic/gin""net/http"
)func Logger() gin.HandlerFunc {return func(c *gin.Context) {fmt.Println("before call...")c.Next()fmt.Println("after call...")}
}func main() {router := gin.Default()// Use the Logger middlewarerouter.Use(Logger())router.GET("/", func(c *gin.Context) {c.JSON(http.StatusOK, gin.H{"message": "Hello, Gin with Middleware!",})})router.Run(":8080")
}

再次运行出现,可以看到控制台打印的日志信息,可以判断日志中间件已经启用。

结论

恭喜! 你已经成功安装了Go和Gin框架,设置了Go工作区,并构建了基本的Gin web应用程序。

相关文章:

Golang Gin系列-2:搭建Gin 框架环境

开始网络开发之旅通常是从选择合适的工具开始的。在这个全面的指南中,我们将引导你完成安装Go编程语言和Gin框架的过程,Gin框架是Go的轻量级和灵活的web框架。从设置Go工作空间到将Gin整合到项目中,本指南是高效而强大的web开发路线图。 安装…...

FGC_grasp复现

复现FGC_grasp 环境配置数据集准备RuntimeError: CUDA error: invalid device ordinal 问题的解决方案raise BadZipFile("File is not a zip file") zipfile.BadZipFile: File is not a zip file问题的解决方案加载数据集时总是被kill然后服务器也卡住了动不了问题的…...

实力认证 | 海云安入选《信创安全产品及服务购买决策参考》

近日,国内知名安全调研机构GoUpSec发布了2024年中国网络安全行业《信创安全产品及服务购买决策参考》,报告从产品特点、产品优势、成功案例、安全策略等维度对各厂商信创安全产品及服务进行调研了解。 海云安凭借AI大模型技术在信创安全领域中的创新应用…...

Avalonia系列文章之小试牛刀

最近有朋友反馈,能否分享一下Avalonia相关的文章,于是就抽空学习了一下,发现Avalonia真的是一款非常不错的UI框架,值得花时间认真学习一下,于是边学习边记录,整理成文,分享给大家,希…...

中国数字安全产业年度报告(2024)

数字安全是指,在全球数字化背景下,合理控制个人、组织、国家在各种活动中面临的数字风险,保障数字社会可持续发展的政策法规、管理措施、技术方法等安全手段的总和。 数字安全领域可从三个方面对应新质生产力的三大内涵:一是基于大型语言模型…...

LabVIEW桥接传感器配置与数据采集

该LabVIEW程序主要用于配置桥接传感器并进行数据采集,涉及电压激励、桥接电阻、采样设置及错误处理。第一个VI("Auto Cleanup")用于自动清理资源,建议保留以确保系统稳定运行。 以下是对图像中各个组件的详细解释&#…...

简明docker快速入门并实践方法

简明docker快速入门并实践方法 前言:1. 什么是Docker?2. Docker的基本概念3. 安装配置Docker4. Docker基本命令:5. 简单实践:拉取Nginx镜像-自定义配置-推送镜像步骤 1:拉取Nginx镜像步骤 1.5(可选&#xf…...

《MambaIR:一种基于状态空间模型的简单图像修复基线方法》学习笔记

paper:2402.15648 目录 摘要 一、引言 1、模型性能的提升依赖于网络感受野的扩大: 2、全局感受野和高效计算之间存在固有矛盾: 3、改进版 Mamba的巨大潜力 4、Mamba 在图像修复任务中仍面临以下挑战: 5、方法 6、主要贡献…...

链式前向星的写法

【图论02】动画说图的三种保存方式 降低理解门槛 邻接表 链式前向星 邻接矩阵_哔哩哔哩_bilibili 杭电ACM刘老师-算法入门培训-第12讲-拓扑排序及链式前向星_哔哩哔哩_bilibili 图论003链式前向星_哔哩哔哩_bilibili(链式前向星的遍历) head数组的下标…...

【逆境中绽放:万字回顾2024我在挑战中突破自我】

🌈个人主页: Aileen_0v0 🔥热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​💫个人格言:“没有罗马,那就自己创造罗马~” 文章目录 一、引言二、个人成长与盘点情感与心理成长学习与技能提升其它荣誉 三、年度创作历程回顾创作内容概…...

尺取法(算法优化技巧)

问题和序列的区间有关,且需要操作两个变量,可以用两个下标(指针)i 和 j 扫描区间。 1,反向扫描,i 从头,j 从尾,在中间相遇。 例1.1(P37) 找指定和的整数对…...

基于 K-Means 聚类分析实现人脸照片的快速分类

注:本文在创作过程中得到了 ChatGPT、DeepSeek、Kimi 的智能辅助支持,由作者本人完成最终审阅。 在 “视频是不能 P 的” 系列文章中,博主曾先后分享过人脸检测、人脸识别等相关主题的内容。今天,博主想和大家讨论的是人脸分类问题。你是否曾在人群中认错人,或是盯着熟人的…...

【漏洞预警】FortiOS 和 FortiProxy 身份认证绕过漏洞(CVE-2024-55591)

文章目录 一、产品简介二、漏洞描述三、影响版本四、漏洞检测方法五、解决方案 一、产品简介 FortiOS是Fortinet公司核心的网络安全操作系统,广泛应用于FortiGate下一代防火墙,为用户提供防火墙、VPN、入侵防御、应用控制等多种安全功能。 FortiProxy则…...

7.5.4 MVCC优化测试

作者: h5n1 原文来源: https://tidb.net/blog/4e02d900 1. 背景 由于MVCC 版本数量过多导致rocksdb扫描key数量过多影响SQL执行时间是tidb经常出现问的问题,tidb也一直在致力于优化该问题。 一些优化方式包括比: (1) 从传统…...

STM32 FreeRTOS 事件标志组

目录 事件标志组简介 基本概念 1、事件位(事件标志) 2、事件组 事件组和事件位数据类型 事件标志组和信号量的区别 事件标志组相关API函数介绍 事件标志组简介 基本概念 当在嵌入式系统中运行多个任务时,这些任务可能需要相互通信&am…...

生成树机制实验

1 实验内容 1、基于已有代码,实现生成树运行机制,对于给定拓扑(four_node_ring.py),计算输出相应状态下的生成树拓扑 2、构造一个不少于7个节点,冗余链路不少于2条的拓扑,节点和端口的命名规则可参考four_node_ring.py,使用stp程序计算输出生成树拓扑 2 实验原理 一、…...

企业分类相似度筛选实战:基于规则与向量方法的对比分析

文章目录 企业表相似类别筛选实战项目背景介绍效果展示基于规则的效果基于向量相似的效果 说明相关文章推荐 企业表相似类别筛选实战 项目背景 在当下RAG(检索增强生成)技术应用不断发展的背景下,掌握文本相似算法不仅能够助力信息检索&…...

2024年博客之星年度评选—创作影响力评审入围名单公布

2024年博客之星活动地址https://www.csdn.net/blogstar2024 TOP 300 榜单排名 用户昵称博客主页 身份 认证 评分 原创 博文 评分 平均 质量分评分 互动数据评分 总分排名三掌柜666三掌柜666-CSDN博客1001002001005001wkd_007wkd_007-CSDN博客1001002001005002栗筝ihttps:/…...

递归40题!再见递归

简介:40个问题,有难有易,均使用递归完成,需要C/C的指针、字符串、数组、链表等基础知识作为基础。 1、数字出现的次数 由键盘录入一个正整数,求该整数中每个数字出现的次数。 输入:19931003 输出&#xf…...

社区版Dify实现文生视频 LLM+ComfyUI+混元视频

社区版Dify实现文生视频 LLMComfyUI混元视频 一、 社区版Dify实现私有化混元视频效果二、为什么社区版Dify可以在对话框实现文生视频?LLMComfyUI混元视频 实现流程图(重点)1. 文生视频模型支持ComfyUI2. ComfyUI可以轻松导出API实现封装3. Di…...

【LLM】Openai-o1及o1类复现方法

note 可以从更为本质的方案出发,通过分析强化学习的方法,看看如何实现o1,但其中的核心就是在于,如何有效地初始化策略、设计奖励函数、实现高效的搜索算法以及利用强化学习进行学习和优化。 文章目录 note一、Imitate, Explore, …...

jlatexmath-android如何实现自定义渲染字符

使用jlatexmath-android的过程,如果出现个别字符渲染不了,会导致无法显示 常用的做法是新增自定义字体切换系统默认字体渲染,下面我们介绍第2种方法。 修改流程: 1、到jlatexmath-android的官网下载源码到本地,导入…...

dockerhub上一些镜像

K8s下网络排障工具 https://hub.docker.com/r/nicolaka/netshoot ex kubectl run tmp-shell --rm -i --tty --image nicolaka/netshoot -- /bin/bash # 主机的net ns下运行 kubectl run tmp-shell --rm -i --tty --overrides{"spec": {"hostNetwork": tru…...

Python 爬虫学习指南与资料分享

Python爬虫学习资料 Python爬虫学习资料 Python爬虫学习资料 在数字化浪潮中,Python 爬虫作为强大的数据获取工具,为众多领域提供关键支持。想要系统掌握这门技术,以下的学习指南与资料分享将为你照亮前行道路。 一、学习指南 入门奠基 …...

TypeScript特有运算符和操作符

文章目录 TypeScript 特有运算符1. keyof2. typeof3. in4. extends5. is6. as 和 <Type>7. never8. readonly9. ?10. []11. | 和 &12. !13. ?? 和 ?. 总结 TypeScript 特有运算符 1. keyof 作用&#xff1a;用于获取对象类型的所有键&#xff08;属性名&#x…...

介绍下常用的前端框架及时优缺点

以下是一些常用的前端框架及其优缺点介绍&#xff1a; React • 优点 • 组件化架构&#xff1a;可构建可复用的UI组件&#xff0c;提高开发效率和组件可维护性。 • 虚拟DOM&#xff1a;高效更新页面&#xff0c;减少直接操作DOM的性能开销。 • 灵活性和可扩展性&#xf…...

MATLAB算法实战应用案例精讲-【数模应用】图形变换和复杂图形组合(附python和MATLAB代码实现)

目录 前言 算法原理 变换 1二维变换 1.1缩放 1.2 翻转 1.3剪切 1.4 旋转 2齐次坐标 2.1引入齐次坐标的原因 2.2 二维齐次坐标 2.3二维仿射变换 2.4逆变换 4组合变换 5三维变换(由二维变换推理而来) 5.1三维齐次坐标 5.2 三维仿射变换 5.3 缩放和平移 5.4…...

SpringMVC 实战指南:打造高效 Web 应用的秘籍

第一章&#xff1a;三层架构和MVC 三层架构&#xff1a; 开发服务器端&#xff0c;一般基于两种形式&#xff0c;一种 C/S 架构程序&#xff0c;一种 B/S 架构程序使用 Java 语言基本上都是开发 B/S 架构的程序&#xff0c;B/S 架构又分成了三层架构三层架构&#xff1a; 表现…...

doris: Flink导入数据

使用 Flink Doris Connector 可以实时的将 Flink 产生的数据&#xff08;如&#xff1a;Flink 读取 Kafka&#xff0c;MySQL 中的数据&#xff09;导入到 Doris 中。 使用限制​ 需要依赖用户部署的 Flink 集群。 使用 Flink 导入数据​ 使用 Flink 导入数据&#xff0c;详…...

Nginx在Linux中的最小化安装方式

1. 安装依赖 需要安装的东西&#xff1a; wget​&#xff0c;方便我们下载Nginx的包。如果是在Windows下载&#xff0c;然后使用SFTP上传到服务器中&#xff0c;那么可以不安装这个软件包。gcc g​&#xff0c;Nginx是使用C/C开发的服务器&#xff0c;等一下安装会用到其中的…...

wordpress 文章底部/长春免费网上推广

JavaScript 正则表达式解析更新时间&#xff1a;2009年02月21日 03:51:20 作者&#xff1a;正则表达式是一个描述字符模式的对象。JavaScript的RegExp对象和String对象定义了使用正则表达式来执行强大的模式匹配和文本检索与替换函数的方法.在JavaScript中,正则表达式是由一个…...

qq业务代理网站建设/最新百度快速排名技术

题目描述给一个链表&#xff0c;若其中包含环&#xff0c;请找出该链表的环的入口结点&#xff0c;否则&#xff0c;输出null。解题思路及代码方法一&#xff1a;哈希法基本思路就是遍历单链表的每个结点&#xff0c;将之前没有被访问的结点存入 set&#xff0c;如果某个结点被…...

服装 公司 网站建设/关键词爱站网关键词挖掘工具

蓝牙耳机是运动和跑步的必备产品&#xff0c;它可以为我们的运动过程增加很多乐趣&#xff0c;无论它是舒适的还是充满节奏的音乐&#xff0c;它也可以带来继续坚持下去的动力。由于它是不可或缺的合作伙伴&#xff0c;我如何选择适合自己的蓝牙耳机&#xff1f;许多运动小白对…...

邵东网站开发/网站推广和网站优化

【任务】编制一个菜单程序&#xff0c;在屏幕上显示如下信息&#xff1a; MENU1. FILE2. EDIT3. COMPILE4. RUN0. QUITplease choose one of 0~4: 选择1-4时&#xff0c;执行相应功能&#xff08;简单起见&#xff0c;输出一句话即可&#xff09;&#xff0c;选择0时&#xff0…...

移动互联网技术和智能设备终端的普及/南京seo排名

▌本文来源&#xff1a;中国电子报&#xff08;已授权&#xff09; ★ 导读 ★ ★ 2020年10月27日&#xff0c;AMD与Xilinx(赛灵思)宣布达成最终协议&#xff0c;AMD以全股票交易的方式收购赛灵思&#xff0c;交易金额为350亿美元。 业界似乎没有不变的誓言&#xff0c;在英特…...

贵阳营销网站建设公司/怎样制作免费网页

多态性 从派生类到基类转换 引用或指针既可以指向基类对象也可以指向派生类对象 只有通过指针或引用调用虚函数才会发生动态绑定...