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 main

import "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 main

import (
    "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 middleware
    router.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应用程序。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Visual Studio Community 2022(VS2022)安装方法

废话不多说直接上图: 直接上步骤: 1,首先可以下载安装一个Visual Studio安装器,叫做Visual Studio installer。这个安装文件很小,很快就安装完成了。 2,打开Visual Studio installer 小软件 3&#xff0c…

《offer 来了:Java 面试核心知识点精讲 -- 原理篇》

在 Java 面试的战场上,只知皮毛可不行,面试官们越来越看重对原理的理解。今天就给大家分享一本能让你在面试中脱颖而出的 “武林秘籍”——《offer 来了:Java 面试核心知识点精讲 -- 原理篇》。 本书详细介绍了Java架构师在BAT和移动互联网公…

1,Linux环境变量基本定义(基于Ubuntu示例进行讲解)

linux环境变量的概念 Linux环境变量(准确说应该是shell变量),是直接存储在操作系统中的一组键值对(dict类型),用于配置系统和应用程序的操作行为。 【有经验的描述】:它们的工作原理很简单&am…

5、docker-compose和docker-harbor

安装部署docker-compose 自动编排工具,可以根据dockerfile自动化的部署docker容器。是yaml文件格式,注意缩进。 1、安装docker-compose 2、配置compose配置文件docker-compose.yml 3、运行docker-compose.yml -f:指定文件,up&…

b站视频(网页加客户端)+本地视频 生成回链

b站视频(网页加客户端)本地视频 生成回链 引言 基于上一篇博客方案 本地视频进度加入笔记根据进度快速锁定视频位置 我想着只有本地的话, 那b站上的视频, 不是每次都得下载下来吗? 如果是一套课程, 直接下载, 然后视频处理成mp3,还好, 如果只是一个视频, 每次这样处理就有点…

mac 安装 node

brew versions node // 安装 node brew versions node14 // 安装指定版本 卸载node: sudo npm uninstall npm -g sudo rm -rf /usr/local/lib/node /usr/local/lib/node_modules /var/db/receipts/org.nodejs.* sudo rm -rf /usr/local/include/node /Users/$USER/.npm su…

电子应用设计方案94:智能AI门禁系统设计

智能 AI 门禁系统设计 一、引言 智能 AI 门禁系统旨在提供更高效、安全和便捷的门禁控制解决方案,结合人工智能技术实现精准的身份识别和智能化的访问管理。 二、系统概述 1. 系统目标 - 实现高精度的人脸识别、指纹识别、虹膜识别等多模态生物识别技术。 - 具备智…

机器学习经典无监督算法——聚类K-Means算法

目录 算法原理 算法步骤 算法API 算法导入 API参数理解 算法实现 算法原理 Kmeans 算法是一种无监督的聚类算法,目的是将数据集中的样本划分到 K 个不同的簇中。 聚类:将数据集中相似的数据点归为一组或一个簇的过程。 数据集:一组相…

Android系统定制APP开发_如何对应用进行系统签名

前言 当项目开发需要使用系统级别权限或frame层某些api时,普通应用是无法使用的,需要在AndroidManifest中配置sharedUserId: AndroidManifest.xml中的android:sharedUserId“android.uid.system”,代表的意思是和系统相同的uid&a…

【机器学习实战入门】使用OpenCV和Keras的驾驶员疲劳检测系统

嗜睡驾驶者警报系统 防止司机疲劳驾驶警报系统 中级 Python 项目 - 司机疲劳检测系统 疲劳检测是一种安全技术,能够预防因司机在驾驶过程中入睡而造成的事故。 本中级 Python 项目的目标是建立一个疲劳检测系统,该系统将检测到一个人的眼睛闭合了一段时…

5 分钟复刻你的声音,一键实现 GPT-Sovits 模型部署

想象一下,只需简单几步操作,就能生成逼真的语音效果,无论是为客户服务还是为游戏角色配音,都能轻松实现。GPT-Sovits 模型,其高效的语音生成能力为实现自然、流畅的语音交互提供了强有力的技术支持。本文将详细介绍如何…

自动化办公|xlwings简介

xlwings 是一个开源的 Python 库,旨在实现 Python 与 Microsoft Excel 的无缝集成。它允许用户使用 Python 脚本自动化 Excel 操作,读取和写入数据,执行宏,甚至调用 VBA 脚本。这使得数据分析、报告生成和其他与 Excel 相关的任务…

JTAG调试器的使用方法

概述: JTAG(联合测试行动组)是基于IEEE 1149.1标准的专用硬件接口。该接口旨在将复杂的芯片和设备连接到标准测试和调试硬件。目前JTAG主要用于: Output control of microcircuits; Testing of printed circuit boards; Flashing of microchips with memory; Chip softwa…

第三次作业:源码编译安装httpd 2.4,提供系统服务管理脚本并测试(两种方法实现)

准备工作 下载httpd软件包进行源码安装 [rootrocky ~]# wget https://archive.apache.org/dist/httpd/httpd-2.4.46.tar.gz 由于进行源码安装,需要对安装对应的编译工具 [rootopen2 ~]# yum install gcc gcc-c make -y 解压文件到指定的目录/usr/local/src下 [root…

Web自动化之验证码识别彻底解决方案

验证码识别解决方案 对于web应用程序来讲,处于安全性考虑,在登录的时候,都会设置验证码,验证码的类型种类繁多,有图片中辨别数字字母的,有点击图片中指定的文字的,也有算术计算结果的&#xff…

第34天:Web开发-PHP应用鉴别修复AI算法流量检测PHP.INI通用过滤内置函数

#知识点 1、安全开发-原生PHP-PHP.INI安全 2、安全开发-原生PHP-全局文件&单函数 3、安全开发-原生PHP-流量检测&AI算法 一、通用-PHP.INI设置 参考: https://www.yisu.com/ask/28100386.html https://blog.csdn.net/u014265398/article/details/109700309 …

C++多态的认识与理解

多态的定义 多态其实就是同一操作在不同的对象上可以有不同的实现方式。 多态的类型 多态分为静态多态和动态多态两种,而静态多态其实我们之前就了解过,今天主要是讲解一下动态多态。 静态多态(编译时多态):静态多态其实就是在…

Ubuntu安装搜狗输入法

Ubuntu安装搜狗输入法 官网完整安装步骤调整默认输入法 官网 搜狗输入法 - 官网:https://shurufa.sogou.com/ 搜狗输入法Linux版 - 首页:https://shurufa.sogou.com/linux 搜狗输入法Linux版 - 安装指南:https://shurufa.sogou.com/linux/gu…

ElasticSearch下

DSL查询 叶子查询:在特定字段里查询特定值,属于简单查询,很少单独使用复合查询:以逻辑方式组合多个叶子查询或更改叶子查询的行为方式 在查询后还可以对查询结果做处理: 排序:按照1个或多个字段做排序分页…

【个人开发】nginx域名映射及ssl证书配置踩坑记录

1. 背景 买了个域名,申请了ssl证书,买都买了,不得部署点东西。于是开始一堆踩坑之旅。 2. 踩过的坑 2.1 报错1:域名访问 Invalid Host header 项目是一个简单的vue项目,启动方式如下 npm run serve但浏览器出现报错&#xff…