go 常用方法

这个博客展示了Go语言中的一些实用函数,包括检查字符串是否在数组中、MD5加密、生成唯一ID、验证手机号和身份证号的合法性、Base64编码与解码、UUID生成以及去除字符串空格的方法。此外,还介绍了如何从Gin框架的HTTP请求中动态获取form-data和JSON参数。
摘要由CSDN通过智能技术生成

1、字符串是否在数组内

func InArray(target string, str_array []string) bool {
	for _, element := range str_array {
		if target == element {
			return true
		}
	}
	return false
}

2、MD5加密

func Md5(str string) string {
	str = fmt.Sprintf("%x", md5.Sum([]byte(str))) //将[]byte转成16进制
	return str
}

3、生成唯一id

func RandString(len int) string {
	r := rand.New(rand.NewSource(time.Now().UnixNano()))
	bytes := make([]byte, len)
	for i := 0; i < len; i++ {
		b := r.Intn(26) + 65
		bytes[i] = byte(b)
	}
	return string(bytes)
}

4、校验手机号

func CheckMobile(phone string) bool {
	regRuler := "^1[345789]{1}\\d{9}$"

	reg := regexp.MustCompile(regRuler)

	return reg.MatchString(phone)

}

5、校验身份证号

func CheckIdCard(card string) bool {
	//18位身份证 ^(\d{17})([0-9]|X)$
	// (^\d{15}$) 15位身份证
	// (^\d{18}$) 18位身份证
	// (^\d{17}(\d|X|x)$) 18位身份证 最后一位为X的用户
	regRuler := "(^\\d{15}$)|(^\\d{18}$)|(^\\d{17}(\\d|X|x)$)"

	// 正则调用规则
	reg := regexp.MustCompile(regRuler)

	// 返回 MatchString 是否匹配
	return reg.MatchString(card)
}

6、base64加解密

//+build wireinject

package main

import (
	"encoding/base64"
	"fmt"
	"log"
)

func main() {

	str := "test string"
	fmt.Printf("string : %v\n", str)

	input := []byte(str)
	fmt.Printf("[]byte : %v\n", input)

	// 演示base64编码
	encodeString := base64.StdEncoding.EncodeToString(input)
	fmt.Printf("encode base64 : %v\n", encodeString)

	// 对上面的编码结果进行base64解码
	decodeBytes, err := base64.StdEncoding.DecodeString(encodeString)
	if err != nil {
		log.Fatalln(err)
	}
	fmt.Printf("decode base64 : %v\n", string(decodeBytes))


	// 如果要用在url中,需要使用URLEncoding
	urlencode := base64.URLEncoding.EncodeToString([]byte(input))
	fmt.Printf("urlencode : %v\n", urlencode)
	//URLEncoding
	urldecode, err := base64.URLEncoding.DecodeString(urlencode)
	if err != nil {
		log.Fatalln(err)
	}
	fmt.Printf("urldecode : %v\n", string(urldecode))
}

7、Uuid

package main

import (
	"fmt"
	"log"

	"github.com/gofrs/uuid"
)

func main() {
	// 产生UUID1   timestamp + MAC 地址。
	u1, err := uuid.NewV1()
	if err != nil {
		log.Fatalf("failed to generate Version 1 UUID: %v", err)
	}
	fmt.Println("generated Version 1 UUID:", u1.String())
	// // 产生UUID2  基于 v1 的基础上优化了下,更安全。
	u2, err := uuid.NewV2(uuid.DomainPerson)
	if err != nil {
		log.Fatalf("failed to generate Version 2 UUID: %v", err)
	}
	fmt.Println("generated Version 2 UUID:", u2.String())
	// 产生UUID3  基于 namespace + 输入内容 进行 MD5。
	u3 := uuid.NewV3(uuid.Must(uuid.NewV1()), "opcai")
	if err != nil {
		log.Fatalf("failed to generate Version 3 UUID: %v", err)
	}
	fmt.Println("generated Version 3 UUID:", u3.String())
	// 产生UUID4  基于随机数。
	u4, err := uuid.NewV4()
	if err != nil {
		log.Fatalf("failed to generate Version 4  UUID: %v", err)
	}
	fmt.Println("generated Version 4 UUID:", u4.String())
	// 产生UUID5  跟 V3 差不多,只是把散列算法的 MD5 变成 SHA1。
	u5 := uuid.NewV5(uuid.Must(uuid.NewV4()), "opcai")
	if err != nil {
		log.Fatalf("failed to generate Version 5  UUID: %v", err)
	}
	fmt.Println("generated Version 5 UUID:", u5.String())
	// 将字符串转换成UUID
	s := "6ba7b810-9dad-11d1-80b4-00c04fd430c8"
	uuidObject, err := uuid.FromString(s)
	if err != nil {
		log.Fatalf("failed to parse UUID %q: %v", s, err)
	}
	fmt.Println("successfully parsed UUID Version", uuidObject.Version())
}

8、去掉字符串空格

func UnsetSpace(str string) string {
	reg := regexp.MustCompile(`[\s\p{Zs}]{1,}`)
	reg.ReplaceAllString(str, "") //请求参数,去掉所有空格
	// reg.ReplaceAllString(string(str), ""),
	return str
}

9、gin动态获取form-data

func GetFormData(c *gin.Context) map[string]interface{} {
	params := make(map[string]interface{})
	for k, v := range c.Request.PostForm {
		params[k] = v[0]
	}
	return params
}

10、gin动态获取json

func GetJsonParams(c *gin.Context) string {
	var parms []byte
	if c.Request.Body != nil {
		parms, _ = ioutil.ReadAll(c.Request.Body)
		c.Request.Body = ioutil.NopCloser(bytes.NewBuffer(parms))
	}
	return string(parms)
}

11  切片转字符串

strings.Replace(strings.Trim(fmt.Sprint(array_or_silce), "[]"), " ", ",", -1)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值