golong专题

GoLong的学习之路,进阶,Viper(yaml等配置文件的管理)

本来有今天是继续接着上一章写微服务的。但是这几天有朋友说,再写Web框架的时候,遇到一个问题,就是很多的中间件(redis,微信,mysql,mq)的配置信息写的太杂了,很不好管理。希望我能写一篇有管理配置文件的。所以这篇就放到今天写吧。微服务就放到下一篇来说吧。今天介绍的主角:Viper 文章目录 Viper概念安装 使用VIper默认值使用->配置文件读取配置文件:写入配置文件监控并重

GoLong的学习之路,进阶,Redis

这个redis和上篇rabbitMQ一样,在之前我用Java从原理上进行了剖析,这里呢,我做项目的时候,也需要用到redis,所以这里也将去从怎么用的角度去写这篇文章。 文章目录 安装redis以及原理redis概念redis的应用场景有很多redis常用的数据类型 使用redis连接普通连接模式TLS连接模式Redis Sentinel模式Redis Cluster模式操作数据特殊 数据

GoLong的学习之路(十八)基础工具之GORM(操作数据库)(删除delete)

上回书说到,更新也叫修改,update,此章说明删除操作。 文章目录 删除删除一条记录的时候根据条件删除钩子函数批量删除阻止全局删除返回删除行的数据 软删除查找被软删除的记录永久删除删除标志`注意` 删除 删除一条记录的时候 删除一条记录时,删除对象需要指定主键,否则会触发批量删除。 // Email 的 ID 是 `10`db.Delete(&email)// D

GoLong的学习之路(十八)基础工具之GORM(操作数据库)(关联)GORM中最重要的特点!(简化代码)

上回书说到,CRUD的基本操作,这里就必须说一下。在正规的数据操作中,其实我们返还给后端返还给前端的数据,和前端所需要的数据是不一致。 就比如一个注册的操作。前端传给后端就包括但不限于。邮箱,密码,账号,姓名等,后端就会将这些保存起来,但是在登录的操作中只需要账号和密码。也就意味着我们需要经常进行数据的转换。 在GORM中有些方式可以减少我们的操作。 所以这回书就写,如何关联结构体于数据库字

GoLong的学习之路(十七)基础工具之Gin框架使用JWT(前后端分离)

文章目录 JWT安装JWT使用什么是Claims默认Claims自定义Claims生成JWT解析JWT 在gin框架中使用JWT获取Token渠道定义方法设置中间件注册路由 总结一下 JWT JWT全称JSON Web Token是一种跨域认证解决方案,属于一个开放的标准,它规定了一种Token实现方式,目前多用于前后端分离项目和OAuth2.0业务场景下。 诺是不用这个JW

GoLong的学习之路(十三)语法之标准库 log(日志包)的使用

上回书说到,flag的问题。这回说到日志。无论是软件开发的调试阶段还是软件上线之后的运行阶段,日志一直都是非常重要的一个环节,我们也应该养成在程序中记录日志的好习惯。 文章目录 log配置logger配置日志前缀配置日志输出位置自定义logger log Go语言内置的log包实现了简单的日志服务。 log包定义了Logger类型,该类型提供了一些格式化输出的方法。 本包也

GoLong的学习之路(十四)语法之标准库 time(时间包)的使用

文章目录 time包跨时区时间戳时间间隔时间操作addSubEqualBeforeAfter 定时器时间格式化解析字符串格式的时间 time包 时间和日期是我们编程中经常会用到的,本文主要介绍了 Go 语言内置的 time 包的基本用法。 time 包提供了一些关于时间显示和测量用的函数。time 包中日历的计算采用的是公历,不考虑润秒。 Go 语言中使用time.Time

GoLong的学习之路(十五)语法之接口(重要)

文章目录 接口接口的定义实现接口的条件面向接口编程接口类型的变量值接收者和指针接收者接口值接收指针接收总结 类型和接口的关系(多对多的关系)一个类型实现多个接口多种类型实现同一接口 接口组合`注意` 空接口空接口的应用 接口值类型断言`注意`总结 接口 在Go语言中接口(interface)是一种类型,一种抽象的类型。(大差不差都,比如Java) 相较于之前章节中讲到的

GoLong的学习之路(八)语法之Map

文章目录 Map初始化方式判断某个键是否存在map的遍历对value值遍历。对key值遍历 使用delete()函数删除键值对按照指定顺序遍历map元素为map的切片值为切片类型的map 做个题吧 Map 哈希表是一种巧妙并且实用的数据结构。它是一个无序的key/value对的集合,其中所有的key都是不同的,然后通过给定的key可以在常数时间复杂度内检索、更新或删除对应的val

GoLong的学习之路(七)语法之slice(切片)

书接上回,上回书中写道:指针,并说明了基本引用类型分配内存new和特定情况下slice(切片),map,channel等集合函数的内存分配make。这篇文章就开始说明,slice。 文章目录 slice(切片)切片(Slice)的定义:部分切片表达式完整切片表达式 make函数构造切片切片的本质切片之间不能直接比较切片的赋值拷贝使用copy()函数复制切片 切片遍历append()方法为切

GoLong的学习之路(五)语法之数组

书接上回,上回书说到,循环语句,在go中循环语句的少了whlie这个关键词,但是与之for可以改这个改这个特点。并且在终止关键词中,又有标签可以方便,停止。这次说数组 文章目录 Array(数组)数组的初始化方法一方法二方法三 数组遍历二维数组二维数组的遍历 数组是值类型 Array(数组) 数组是同一种数据类型元素的集合。 在Go语言中,数组从声明时就确定,使用时可以修改

GoLong的学习之路(四)语法之循环语句

书接上回,上回说到运算符,这次我们说一个编程语言中最重要的一点:流程控制,及循环语句 文章目录 循环语句if else(分支结构)if条件判断特殊写法 for(循环结构)for range(键值循环) switch casegoto(跳转到指定标签)break(跳出循环)(标签)continue(继续下次循环) 循环语句 Go语言中最常用的流程控制有if和for,而switch

GoLong的学习之路(三)语法之运算符

书接上回,我们进展到了GoLong的基本数据类型,接下来说运算符(其实和常见的编程语言的逻辑规则一样) 运算符 运算符用于在程序运行时执行数学或逻辑运算。(不可谓不重要) Go 语言内置的运算符有: 算术运算符关系运算符逻辑运算符位运算符赋值运算符 算术运算符 运算符意义+相加-相减*相乘/相除 ++(自增)和- -(自减)在Go语言中是单独的语句,并不是运算符。 关系运算符 运

GoLong的学习之路(一)语法之变量与常量

目录 GoLang变量批量声明变量的初始化类型推导短变量声明匿名变量 常量iota(特殊)(需要重点记忆) GoLang go的诞生为了解决在21世纪多核和网络化环境越来越复杂的变成问题而发明的Go语言。 go语言是从Ken Thomepson发明的B语言和Dennis M.Ritchie发明的c语言逐步演化过来的,是c语言家族的成员(在我看来,其实现在大部分还在用的语言与c语