Go开发运维:Go项目工程化进行初始配置

news2024/9/21 20:24:19

目录

一、实验

1.环境

2.初始化Go项目

3.Go项目工程化

4. 导入Gin包

5.下载viper与logrus依赖

二、问题

1.Windows如何进行go的版本升级

2. Go mod常用命令

3.下载Gin依赖失败


一、实验

1.环境

(1)主机

表1 主机

系统

软件版本备注
Windows11VS Code1.92.2
go1.20.4

运行(输入cmd)

查看VS Code版本

Code --version

查看go版本

go version

2.初始化Go项目

(1) go env查看GOPATH

(2) 进入GOPATH目录下

C:\Gocode\src

(3)创建项目工程

创建project-devops

(4)VS Code打开工程

(5)右上角点击打开命令行

(6)初始化项目

go mod init project-devops

(7)查看当前目录

工程目录下自动生成了go.mod

(8)创建main.go

VS Code创建main.go文件,作为项目的总入口

3.Go项目工程化

(1)配置层

VS Code创建config目录及config.go文件,存放程序的配置信息

(2)配置层

VS Code创建routers目录及routers.go文件,管理程序的路由信息

(3)控制器层

VS Code创建controllers目录及controllers.go文件,实现路由的处理逻辑

(4)中间件层

VS Code创建middlewares目录及middlewares.go文件,配置路由的中间件

(5)模型层

VS Code创建models目录及models.go文件,实现数据的CRUD操作

CRUD操作:
1)create 添加数据
2)read   读取数据 
3)update 修改数据
4)delete 删除数据

(6)工具类层

VS Code创建utils目录及utils.go文件,作为工具类封装

4. 导入Gin包

(1)访问

https://pkg.go.dev/

(2) 搜索gin

点击进入

点击扩展

查看

import "github.com/gin-gonic/gin"

(3)config.go创建初始化函数 

func init() {
	println("Start加载程序配置!")
}

(4)main.go导入依赖与配置gin

import (
	_ "project-devops/config"

	"github.com/gin-gonic/gin"
)

func main() {
	r := gin.Default()
	r.Run()
}

(5)下载gin依赖

go get  github.com/gin-gonic/gin

(6)运行

go run .\main.go

打印了配置层初始化信息

5.下载viper与logrus依赖

(1)访问

https://pkg.go.dev/

(2) 搜索viper ( 用来处理程序配置)

点击进入

点击扩展

查看安装

(3)下载viper依赖

go get github.com/spf13/viper

 (4) 搜索logrus (用来处理程序日志)

点击进入

点击扩展

查看安装

(3)下载logrus依赖

go get github.com/sirupsen/logrus

(4)最后查看go.mod

相关依赖都已更新

二、问题

1.Windows如何进行go的版本升级

(1)访问官网

https://golang.google.cn/dl/

(2)查看历史版本

点击Show

选最对应版本下载

选择对应的Windows版本下载安装

https://golang.google.cn/dl/go1.20.4.windows-amd64.msi

(3)配置Go环境便变量

我的电脑-属性-高级系统设置

确认Go的系统变量

确认Go的用户变量

(4)查看配置的环境变量

cmd执行

go env

(5) VSCode 安装Go插件

搜索go 安装

安装Go 辅助工具,输入ctrl + shift + p

点击确定,等待安装

2. Go mod常用命令

(1)常用命令

1)go mod init
初始化模块,并在当前目录下创建go.mod文件

2)go mod tidy 
清理未使用的依赖项,并更新go.mod文件

3)go mod vender
将依赖项复制到vender目录,方便离线部署

4) go mod download
下载当前模块机器依赖的所有依赖

5) go mod graph
以文本形式打印模块依赖图

6)go list -m all
列出当前模块及其依赖项的所有模块和版本

7) go get
获取指定包或模块,并将其添加到go.mod文件

8) go get -u
更新指定包的版本 

3.下载Gin依赖失败

(1)报错

github.com/gin-gonic/gin imports
        github.com/gin-gonic/gin/binding imports
        github.com/pelletier/go-toml/v2 imports
        slices: package slices is not in GOROOT (C:\Program Files\Go\src\slices)
note: imported by a module that requires go 1.21

(2)原因分析

go get -u github.com/gin-gonic/gin

因为当前go版本为1.20.4,更新指定包的版本至少需要go 1.21

(3)解决方法
在不升级版本的情况下,获取指定包或模块,并将其添加到go.mod文件

go get  github.com/gin-gonic/gin

成功:

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

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

相关文章

JUC-指令有序性

指令重排 JVM 会在不影响正确性的前提下,可以调整语句的执行顺序,思考下面一段代码 static int i; static int j; // 在某个线程内执行如下赋值操作 i ...; j ...; 可以看到,至于是先执行 i 还是 先执行 j ,对最终的结果不…

大数据技术之HBase优化(5)

目录 HBase 优化 RowKey 设计 实现需求 1 实现需求 2 添加预分区优化 参数优化 JVM 调优 HBase 使用经验法则 HBase 优化 RowKey 设计 一条数据的唯一标识就是 rowkey,那么这条数据存储于哪个分区,取决于 rowkey 处于哪个预分区的区间内。设计 rowkey …

音乐发烧友的蓝牙耳机推荐?四款开放式耳机推荐

蓝牙耳机我还是很推荐开放式耳机的,因为开放式耳机相较入耳式耳机佩戴起来真的很舒适。 不入耳的设计,能够给耳道带来足够的“呼吸空间”。还有许多主流的开放式耳机,像是大部分的挂耳式的蓝牙耳机,耳挂部分都是使用的耐用且易弯…

【吊打面试官系列-Redis面试题】Redis 的持久化机制是什么?各自的优缺点?

大家好,我是锋哥。今天分享关于 【Redis 的持久化机制是什么?各自的优缺点?】面试题,希望对大家有帮助; Redis 的持久化机制是什么?各自的优缺点? 1000道 互联网大厂Java工程师 精选面试题-Jav…

网站开发:XTML+CSS - 网页文档结构

1. 前言 HTML(HyperText Markup Language,超文本标记语言)是构建网页和 web 应用程序的标准标记语言。它定义了网页的结构和内容,允许开发者创建有组织、语义化的文档。 HTML 使用一系列的元素(elements)和…

[ABC368G] Add and Multiply Queries

G - Add and Multiply Queries 2个单点,一个询问,感觉询问只能O(n)做 但是发现查询答案保证在1e18以下 2^60 也就是说b[i]>1最多60个 也就是说需要判断的地方最多60个,其他地方可以用区间和优化 用set or vector 记录b[i]>1的位置&a…

如何在 Python 中将字符串转换为日期时间或时间对象

文章目录 一、介绍二、datetime使用将字符串转换为对象datetime.strptime()三、将字符串转换为datetime.datetime()对象示例四、将字符串转换为datetime.date()对象示例五、将字符串转换为datetime.time()对象示例六、datetime.datetime()使用区域设置示例将字符串转换为对象七…

最小二乘模型和线性最小均方模型的区分

禹晶、肖创柏、廖庆敏《数字图像处理(电子信息前沿技术丛书)》P229、P230 这部分是最小二乘模型,而维纳滤波是建立在随机过程总体的基础上线性最小均方模型,所以这样的推导过程从概念上错误,删除。 后悔没听廖老师的。…

更改银河麒麟服务器的语言环境为中文

更改银河麒麟服务器的语言环境为中文 1、查看语言环境2、更改语言环境 💖The Begin💖点点关注,收藏不迷路💖 1、查看语言环境 打开终端,运行: locale -a查看是否包含zh_CN.UTF-8。 2、更改语言环境 编辑文…

无人机反制:低空安全综合管理平台技术详解

无人机反制技术中的低空安全综合管理平台,作为守护低空安全的重要工具,集成了多种先进的技术手段和管理功能,实现了对无人机等低空飞行器的全方位、无死角监控与反制。以下是对该技术平台的详细解析: 一、技术架构与核心功能 低…

Vue笔记总结(Xmind格式):第五天

Xmind鸟瞰图: 简单文字总结: 1. 生命周期 Vue 框架内置函数,随着组件的生命周期阶段,自动执行 作用: 特定的时间点,执行特定的操作 场景: 组件创建完毕后,可以在created 生命周期函数中发起Ajax 请求&am…

2024/8/31 笔记

IOC&DI 之前写了一点👇 7/8 复盘-CSDN博客 事务管理 为什么需要事务管理 👆一般加在业务层增删改的方法上,查询或者简单的增删改基本用不上 事务的回滚 rollbackForException.class //设置所有异常都会回滚👇 事务…

华为云征文|下一代云服务器,Flexus X实例选购指导

华为云 Flexus 服务器所提供的 Flexus X 实例,是基于擎天 QingTian 架构、瑶光云脑、盘古大模型等根技术的创新,基于业务负载可灵活匹配业务产品所需要的资源规格,同时是业界内首款基于应用驱动的柔性算力云服务器。 Flexus X 实例具有大模型…

Java18 设计模式

第十八节:设计模式 1.设计模式概述 1.1软件设计模式的产生背景 ​ "设计模式"最初并不是出现在软件设计中,而是被用于建筑领域的设计中。1977年美国著名建筑大师、加利福尼亚大学伯克利分校环境结构中心主任克里斯托夫亚历山大(…

谁便宜就选谁---基于成本的优化

什么是成本 我们之前老说MySQL执行一个查询可以有不同的执行方案,它会选择其中成本最低,或者说代价最低的那种方案去真正的执行查询。不过我们之前对成本的描述是非常模糊的,其实在MySQL中一条查询语句的执行成本是由下面这两个方面组成的&a…

十四、坦克大战(上)

文章目录 一、坦克大战游戏演示(略)二、java绘图坐标体系三、java绘图技术3.1 快速入门3.2 绘图原理Graphics类 四、java事件处理机制五、绘制坦克5.1 坦克抽象类、己方坦克、敌方坦克5.2 自定义面板5.3 绘图界面 一、坦克大战游戏演示(略) 二、java绘图坐标体系 三、java绘图…

LVGL 控件之日历(lv_calendar)

目录 一、日历1、组成2、创建日历3、日期的设置/显示3.1 设置当前日期3.2 显示日期3.3 日历头 4、设置日期高亮5、设置日名6、事件7、API 函数 一、日历 1、组成 日历部件由两个部分组成: 主体背景 LV_PART_MAIN;各个按钮 LV_PART_ITEMS(指…

kubeadm部署 Kubernetes(k8s) 高可用集群【V1.20 】

kubeadm是官方社区推出的一个用于快速部署kubernetes集群的工具。 calico.yaml kubernertes-dashboard.yaml 1. 安装要求 在开始之前,部署Kubernetes集群机器需要满足以下几个条件: 7台机器,操作系统Openeuler22.03 LTS SP4硬件配置&#…

【GPT】Coze使用开放平台接口-【1】创建插件

本文档主要描述在 coze 里面把开放平台的接口创建为插件,供别人调用。本系列调用的接口,都是调用快商通 AI 开放平台的接口 注意:如果是团队需要的,建议直接在团队空间里面创建这些,不然在个人空间创建得很爽&#xff…

Linux——命令行文件的管理(创建,复制,删除,移动文件,硬链接与软链接)

目录 一、创建文件和目录 二、复制文件和目录 三、删除文件和目录 四、移动文件和目录 五、硬链接和软链接(软链接也指符号链接) 索引节点(inode) 硬链接 软链接(符号链接) 一、创建文件和目录 mkdir命令可以创…