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 test

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

import (
"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 = 30
	TextRed
	TextGreen
	TextYellow
	TextBlue
	TextMagenta

)

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方式。
	TextRed
	TextGreen
	TextYellow
	TextBlue
	TextMagenta
)

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值