Go之开发小功能集合(viper获取配置信息,test编写测试单元,用户目录获取,JWT安全校验,字符串去重,Swag在线接口文档,画字符图像工具,Gin模式的选择,iota枚举,promhttp等)
提示:
该链接是go语言小工具:
https://www.kancloud.cn/congzaifeng/go_third_party_libraries/467593
Go语言学习全面文档:http://www.topgoer.com/
1. 需求在开发中采用非beego框架,的一些项目比如Gin需要进行相关的配置,那么配置文件就是关键,如何获取配置文件的内容是最大的需求,下面就是关于Goland获取配置文件的方式。
Golang首先就是开发过程中遇到的viper配置模块:
https://blog.csdn.net/sd653159/article/details/83143760
步骤: 创建项目配置文件和主函数,配置文件和主函数
/*** @Author GCG* @Date : 2020/11/11* @Description: 功能描述,获取配置文件小工具,Viper*/
func Test3(t *testing.T) {fmt.Println("--------------测试相关的Viper,配置文件信息获取------------")//读取yaml文件v := viper.New()//设置读取的配置文件v.SetConfigName("settings")//添加读取的配置文件路径v.AddConfigPath("./conf/")//设置配置文件类型v.SetConfigType("yml")if err := v.ReadInConfig(); err != nil {fmt.Printf("err:%s\n", err)}fmt.Println(v.Get("settings.application.name"))v.Set("gg","gcg") //viper提供了键值对的设置,采用set将值写进v中,然后就是可以像配置文件中的字段值获取方式相同。fmt.Println(v.Get("gg"))
}
2. 一步步教你编写可测试的Go语言代码(在Goland中添加单元测试)超级好用,满足我们的需求
相信每位编程开发者们应该都知道,Golang作为一门标榜工程化的语言,提供了非常简便、实用的编写单元测试的能力。本文通过Golang源码包中的用法,来学习在实际项目中如何编写可测试的Go代码。有需要的朋友们可以参考借鉴,下面跟着小编一起去学习学习吧。
Golang单元测试对文件名和方法名,参数都有很严格的要求。
例如:
1、文件名必须以xx_test.go命名
2、方法必须是Test[^a-z]开头
3、方法参数必须 t *testing.T
步骤:
首先: 在项目中创建test文件夹,然后在test中添加文件名xxx_test.go(注意,一定按照这种规范进行命名)
其次:编写相关的代码,如下图所示:
package testimport ("fmt""testing"
)func TestHello(t *testing.T){fmt.Println("Hello World!")
}
上面是简单的test测试,如果进行性能测试的话就要使用testing.B, 不过和testing.T不同的是函数名称需要以Benchmark为开头:
使用说明: 自带N测试次数,是动态的不需要设置,系统会根据代码稳定性进行测试测试:
// 性能测试
func Benchmark1(t *testing.B) {u := U{name: "Tom",age: 20,}for i := 0; i < t.N; i++ {
// 里面写具体的业务测试函数_,err:=json.Marshal(u)if err!=nil {fmt.Println(err)}//fmt.Println(S)}}
测试结果: (最后的10257645就是执行的次数, 114就是花费的ns时间)
goos: windows
goarch: amd64
pkg: test/testNew
Benchmark1
Benchmark1-12 10257645 114 ns/op
PASS
3. go-homedir用户路径检索工具(获取用户根目录)
package mainimport (
"fmt"
"github.com/mitchellh/go-homedir"
)func main() {home, _ := homedir.Dir()fmt.Println("home->", home)
}
windows下结果 : C:\Users\cc
linux 下结果: /root
4. JWT安全校验工具(基于gin进行相关的设计)
https://blog.csdn.net/gcglhd/article/details/109667750
5. go语言字符串去重(高效处理,采用map主键唯一方式,将每次遍历的数据费map的主键k值)
唯一需要考虑的就是再返回新的字符串切片的之前先将map赋值为nil便于map的内存回收.
https://blog.csdn.net/qq_21794823/article/details/88076662
6. Swag在线接口文档 (采用gin-swag 包实现swagger接口文档 )
https://www.jb51.net/article/195124.htm
7. 画字符图像网址:(该功能是自定义实现图像的生成,然后产生字符的文件,可以直接进行相关的启动获取,本人在启动项目的时候添加了该图标,类似于Beego的图标)
几个常用的字符画生成网站
http://www.network-science.de/ascii/ 这个是比较常用的,可以根据输入的字符生成字符画
http://patorjk.com/software/taag/
http://www.degraeve.com/img2txt.php 可以根据在线的图片网址生成字符画,比如可以直接将公司logo的地址粘贴进去生成字符画,风格还算正常.
实例:
首先在项目的static文件夹下面创建文件例如test.txt;
然后在test.txt中复制上面网站上面生成的自定义图标;类型推荐使用big看起来比较好看。
最后就是在启动代码中添加下面的函数就可以了,下面是go语言的实现方式,Java的类似就是读IO文件流。
//图标显示content, _ := ioutil.ReadFile("./static/test.txt") //输出图标的字节流fmt.Println(string(content))
8. Gin的模式选择
https://blog.csdn.net/helen920318/article/details/105044847
9. Iota枚举的创建(Iota会根据换行自动的加1)
https://www.cnblogs.com/nulige/p/10199722.html
iota会自动换行+1,不使用iota的效果如下:
const (TextBlack = 30TextRedTextGreenTextYellowTextBlueTextMagenta)func Test19(t *testing.T) {fmt.Println(TextGreen)fmt.Println(TextBlue)
}
结果:
log.level:INFO
=== RUN Test19
30
30
--- PASS: Test19 (0.00s)
PASS
添加iota的测试如下:
const (TextBlack = iota+30 //添加Iota方式。TextRedTextGreenTextYellowTextBlueTextMagenta
)func Test19(t *testing.T) {fmt.Println(TextGreen)fmt.Println(TextBlue)
}
结果:
log.level:INFO
=== RUN Test19
32
34
--- PASS: Test19 (0.00s)
PASS
10.基于promhttp的监控器
https://blog.csdn.net/ayqy42602/article/details/109066342
Go之开发小功能集合(viper获取配置信息,test编写测试单元,用户目录获取,JWT安全校验,字符串去重,Swag在线接口文档,画字符图像工具,Gin模式的选择,iota枚举,promhttp等)相关推荐
- 014-Axios Ajax:前后端分离概述,发送json类型的参数,前后端分离开发:在线接口文档,前端工程化、Element、nginx
第一节 Ajax概述 1.概述 概念: Asynchronous JavaScript And XML,异步的JavaScript和XML. 作用: 数据交换:通过Ajax可以给服务器发送请求,并获取 ...
- 解决调用uni.getLocation获取位置信息,微信高版本用户无法获取位置信息问题
项目场景: 公司的业务需要涉及到获取用户位置信息,一开始我使用了uni.getLocation来获取用户的位置信息,根据官网api介绍来看只需要调用uni.getLocation方法就能获取位置信息, ...
- 强烈推荐 在线接口文档管理工具 小幺鸡 小团队可以省掉测试了
在朋友那儿看到一个不错的在线文档管理工具 主要特点 : 在线接口测试 在线测试,方便前后端开发,降低错误率. 支持:xml.json.txt.binary.websocket 可视化编辑与分享 可视化 ...
- Revit开发小功能集合
文章目录 1.获取Revit中打开的所有的View(视图) 2.在不打开Revit的情况下读取rvt文件数据 3.获取元素的材质信息 5.编辑族参数(没有成功,后期会更新) 6.访问墙体结构层信息 7 ...
- 收藏夹吃灰系列(二):教小师妹通过代码实现Swagger在线接口文档转word文档!教完后...?
话不多说,工具源码直接分享给大家吧: 如果最后觉得该代码生成器对你有所帮助,请不要吝啬你的赞,直接pia的点亮就完了啦,up up up!!! 如下就是全码,拿走!不谢!!助你趁早解放双手! 本地sw ...
- [Golang梦工厂]一个小项目带你学会GIN框架、JWT鉴权、swagger生成接口文档,看这一篇就够了
前言 哈喽,大家好,我是asong,这是我的第八篇原创文章.听说你们还不会jwt.swagger,所以我带来一个入门级别的小项目.实现用户登陆.修改密码的操作.使用GIN(后台回复Golang梦工厂: ...
- 开发接口文档_更优更稳更好,看文档驱动开发模式在AIMS中的优势
[摘要]程序员常会说:我最讨厌别人写的代码没有文档,我也最讨厌自己需要写文档. 有一个很老的梗: 我最讨厌别人写的代码没有文档,我也最讨厌自己需要写文档. 有这种想法的程序员应该算是一个老鸟了,对于 ...
- vue后端必须接口吗_前后端分离模式,后端说开发完才能给接口文档,合理吗
背景: 汇总了下老王在其他平台的原创回复,欢迎关注老王原创公众号[软件老王],关注不迷路. 一.后端开发完接口才给出接口文档,合理吗? 本人所在的项目组做项目过程中,后端不会先给出接口文档,而是要等他 ...
- 智表ZCELL产品V1.4.0开发API接口文档 与 产品功能清单
为了方便大家使用ZCELL,应网友要求,整理编写了相关文档,现与产品一起同步发布,供大家下载使用,使用过程中如有疑问,请与我QQ联系. 智表(ZCELL)V1.4.0版本 功能清单文档下载地址: 功 ...
最新文章
- 最权威北美放射学会年会回顾:AI的进化与下一个前沿
- python编程 从入门到实践怎么样-python编程从入门到实践这本书怎么样
- LiveVideoStack线上分享第五季(五):用FFmpeg搭建基于CNN的视频分析方案
- Eclipse中显示文件字符乱码
- mondrain配置mysql_mondrian 4.7 源码部署(示例代码)
- [JavaWeb-CSS]CSS概述
- 网页中文乱码--UTF-8和GB2312互转
- 为什么用python写爬虫_零基础,是怎么开始写Python爬虫的
- 在android的jni线程C传回调函数给java
- Java虚拟机(三)垃圾标记算法与Java对象的生命周期
- 判断用户输入的是数字还是字符串
- Linux打印全部的内容,linux提取指定列字符并打印所有内容(awk)
- 【Kubernetes】k8s使用stargz光速分发镜像
- 台式WIN7和os x yosemite 10.10.1懒人版双系统安装教程
- 2006-10-30 18:37:00 著名Linux内核程序员大鹰 ox啊
- JavaScript 教程「1」:与君初相识
- CSS 中 a 标签为什么不能继承父类的颜色?
- ArrayDeque(双端队列的线性实现)详解
- 转载一位老码农的技术理想
- Oracle Database 12c Security - 6. Real Application Security