文章目录

  • Synopsis
  • Encode
  • Net
  • Slice
  • SQL
  • String
  • Struct
  • Time
  • Type Conversion
    • to another type
    • to set
    • to slice
  • URL
  • Crypto
  • Rand
  • JSON
  • Other
  • Summary

Synopsis

Go common and huge utility functions help you to create your go program quickly and easily.

Encode

Some useful functions can be used to handle conversion of different character encoding, such as gbk to utf8.

Example:

import (huge "github.com/dablelv/go-huge-util"
)gbkStr := []byte{0xC4, 0xE3, 0xBA, 0xC3} // 你好 in gbk
utf8Str, _ := huge.GbkToUtf8(gbkStr)     // 你好 in utf8
fmt.Println(string(utf8Str))             // 你好gbkStrRes, _ := huge.Utf8ToGbk(utf8Str)
fmt.Println(gbkStrRes) // [196 227 186 195]

Net

Some useful functions can be used to handle network. For example you can use IPv4StrToU32() transform ipv4 string to uint32 value.

Example:

import (huge "github.com/dablelv/go-huge-util"
)huge.IsReservedIP("0.0.0.256")    // -1 invalid ip
huge.IsReservedIP("39.156.69.79") // 0 public ip
huge.IsReservedIP("127.0.0.1")    // 1 reserved iphuge.IPv4StrToU32("127.0.0.1")      // 2130706433
huge.U32ToIPv4Str(2130706433)       // "127.0.0.1"
huge.GetNativeEndian()              // LittleEndian
huge.IsLittleEndian()               // true

Slice

Some useful functions can be used to handle slice.

Example:

import (huge "github.com/dablelv/go-huge-util"
)huge.UniqueIntSlice([]int{1, 2, 2, 3})              // [1 2 3]
huge.UniqueUintSlice([]uint{1, 2, 2, 3})            // [1 2 3]
huge.UniqueStrSlice([]string{"a", "b", "b", "c"})   // [a b c]huge.ReverseIntSlice([]int{1, 2, 3})                // [3 2 1]
huge.ReverseUintSlice([]uint{1, 2, 3})              // [3 2 1]
huge.ReverseStrSlice([]string{"a", "b", "c"})       // [c b a]huge.SumSlice([]int{1,2,3})                         // 6
huge.SumSlice([]uint{1,2,3})                        // 6
huge.SumSlice([]float32{1.1, 2.2, 3.3})             // 6.6
huge.SumSlice([]float64{1.1, 2.2, 3.3})             // 6.6huge.JoinSliceWithSep([]int{1, 2, 3}, ",")              // 1,2,3
huge.JoinSliceWithSep([]uint{1, 2, 3}, ",")             // 1,2,3
huge.JoinSliceWithSep([]float64{1.1, 2.2, 3.3}, ",")    // 1.1,2.2,3.3
huge.JoinSliceWithSep([]string{"a", "b", "c"}, ",")     // a,b,c// CRUD(Create Read Update Delete) on slice by index
fib := []int{1, 1, 2, 3, 5, 8}
r, _ := huge.InsertSliceE(fib, 6, 13)          // [1 1 2 3 5 8 13]
r, _ := huge.DeleteSliceE(fib, 0)               // [1 2 3 5 8]
r, _ := huge.UpdateSliceE(fib, 5, 88)          // [1 1 2 3 5 88]
r, _ := huge.GetEleIndexesSliceE(fib, 1)       // [0 1]// or
r := huge.InsertIntSlice(fib, 5, 13)       // [1 1 2 3 5 8 13]
r := huge.DeleteIntSliceE(fib, 0)          // [1 2 3 5 8]
r := huge.UpdateIntSliceE(fib, 5, 88)      // [1 1 2 3 5 88]
r := huge.GetEleIndexesSlice(fib, 1)       // [0 1]

SQL

Some useful functions can be used to handle sql statement.

Example:

import (huge "github.com/dablelv/go-huge-util"
)var sql = `select * from t where field1="{name}"`
huge.FormatSql(sql, map[string]string{"name": "dablelv"}, false)    // select * from t where field1="dablelv"

String

Some useful functions can be used to handle string.

Example:

import (huge "github.com/dablelv/go-huge-util"
)huge.Split("a,b,c", ",")                    // []string{"a", "b", "c"}huge.JoinStr(",", "a", "", "b")             // "a,,b"
huge.JoinStrSkipEmpty(",", "a", "", "b")    // "a,b"huge.ReverseStr("abc")                      // "cba"huge.GetAlphanumericNumByASCII("108条梁山man")     // 6
huge.GetAlphanumericNumByASCIIV2("108条梁山man")   // 6
huge.GetAlphanumericNumByRegExp("108条梁山man")    // 6

Struct

Some useful functions can be used to handle string.

Example:

import (huge "github.com/dablelv/go-huge-util"
)var st = struct {I intS string
}{I: 1, S: "a"}huge.Struct2Map(st)         // map[I:1 S:a]
huge.Struct2MapString(st)   // map[I:1 S:a]

Time

Some useful functions can be used to handle date and time.

Example:

import (huge "github.com/dablelv/go-huge-util"
)tc := huge.NewTimeCounter()
// ...                          // do your statements
tc.GetMs()                      // get the time cost in millisecondhuge.GetNowDate()               // just a example, the same below. 2020-05-16
huge.GetNowTime()               // 00:15:42
huge.GetNowDateTime()           // 2020-05-16 00:15:42
huge.GetNowDateTimeZ()          // 2020-05-16 00:15:42 +08:00huge.GetNowS()                  // 1589559342
huge.GetNowMs()                 // 1589559342963
huge.GetNowUs()                 // 1589559342963062
huge.GetNowNs()                 // 1589559342964063200huge.GetDayBeginMoment(time.Now())  // 2020-05-16 00:00:00 +0800 CST
huge.GetDayEndMoment(time.Now())    // 2020-05-16 23:59:59.999999999 +0800 CST

Type Conversion

Some useful functions can be used to convert one type to another types, such as to map or slice.

to another type

// Example to string
s, err := ToAny[string]("foo") // "foo"
s, err := ToAny[string](8)     // "8"
s, err := ToAny[string](8.31)  // "8.31"
s, err := ToAny[string]([]byte("one time")) // "one time"
s, err := ToAny[string](nil)                // ""var foo any = "one more time"
s, err := ToAny[string](foo)                // "one more time"// Example to int
i, err :=  ToAny[int](8)                  // 8
i, err :=  ToAny[int](8.31)               // 8
i, err :=  ToAny[int]("8")                // 8
i, err :=  ToAny[int](true)               // 1
i, err :=  ToAny[int](false)              // 0
i, err :=  ToAny[int](nil)                // 0var eight any = 8
i, err :=  ToAny[int](eight)              // 8// Example to bool
b, err := ToAny[bool]("true")           // true
b, err := ToAny[bool]("false")          // false
b, err := ToAny[bool]("True")           // true
b, err := ToAny[bool]("False")          // false
b, err := ToAny[bool](1)                // true
b, err := ToAny[bool](0)                // false
b, err := ToAny[bool](nil)              // falsevar one any = 1
b, err := ToAny[bool](one)           // true

to set

import ("github.com/dablelv/go-huge-util/conv"
)// Convert bool slice or array to set.
bools := []bool{true, false, true}
set := conv.ToBoolSet(bools)
set, _ := conv.ToBoolSetE(bools)
set := conv.ToSet[bool](bools)
set, _ := conv.ToSetE[bool](bools)// Convert int slice or array to set.
ints := []int{1, 2, 3}
set := conv.ToIntSet(ints)
set, _ := conv.ToIntSetE(ints)
set := conv.ToSetG[int](ints)
set, _ := conv.ToSetE[int](ints)// Convert string slice or array to set.
strs := []string{"foo", "bar", "baz"}
set := conv.ToStrSet(strs)
set, _ := conv.ToStrSetE(strs)
set := conv.ToSet[string](strs)
set, _ := conv.ToSetE[string](strs)// Split string to set.
conv.SplitStrToSet("a,b,c", ",")  // map[a:{}, b:{}, c:{}]

to slice

import ("github.com/dablelv/go-huge-util/conv"
)// Convert string separated by white space character to string slice.
sl := conv.ToStrSlice("a b c") // []string{"a","b","c"}
sl, _ := conv.ToStrSliceE("a b c") // []string{"a","b","c"}// Convert int slice or array to string slice.
sl := conv.ToStrSlice([]int{1, 2, 3}) // []string{"1","2","3"}
sl, _ := conv.ToStrSliceE([]int{1, 2, 3}) // []string{"1","2","3"}// Convert map to slice in random order.
ks, vs := conv.Map2Slice(map[int]int{1:1, 2:2, 3:3})
ks, vs, _ := conv.Map2SliceE(map[int]int{1:1, 2:2, 3:3})slK, _ : = ks.([]int)
slV, _ : = vs.([]int)ks, vs := conv.Map2Slice(map[string]int{"foo":1, "bar":2, "baz":3})
ks, vs, _ := conv.Map2SliceE(map[string]int{"foo":1, "bar":2, "baz":3})slK, _ : = ks.([]string)
slV, _ : = vs.([]int)// Split string to slice.
// int[1,2,3]
ints := conv.SplitStrToIntSlice("1,2,3", ",")
ints := conv.SplitStrToSlice[int]("1,2,3", ",")
ints, _ := conv.SplitStrToSliceE[int]("1,2,3", ",")
// uint[1,2,3]
uints := conv.SplitStrToUintSlice("1,2,3", ",")
uints := conv.SplitStrToSlice[uint]("1,2,3", ",")
uints, _ := conv.SplitStrToSliceE[uint]("1,2,3", ",")
// float64[1.1,2.2,3.3]
f64s := conv.SplitStrToFloat64Slice("1.1,2.2,3.3", ",")
f64s := conv.SplitStrToSlice[float64]("1.1,2.2,3.3", ",")
f64s, _ := conv.SplitStrToSliceE[float64]("1.1,2.2,3.3", ",")
// bool[true,false,true,false]
bs := conv.SplitStrToBoolSlice("1,0,true,false", ",")
bs := conv.SplitStrToSlice[bool]("1,0,true,false", ",")
bs, _ := conv.SplitStrToSliceE[bool]("1,0,true,false", ",")

URL

Some useful functions can be used to handle url.

Example:

import (huge "github.com/dablelv/go-huge-util"
)var rawUrl=`http://www.aspxfans.com:8080/news/index.asp?boardID=520&page=1&page=2#name`
huge.RawUrlGetDomain(rawUrl)    // "www.aspxfans.com"
huge.RawUrlGetPort(rawUrl)      // "8080"huge.RawURLGetParam(rawUrl, "page")         // 1 <nil>
huge.RawURLGetParams(rawUrl, "page")        // [1 2] <nil>
huge.RawURLGetAllParams(rawUrl)             // map[boardID:[520] page:[1 2]] <nil>huge.RawURLAddParam(rawUrl, "keyword", "dog")   // http://www.aspxfans.com:8080/news/index.asp?boardID=520&keyword=dog&page=1&page=2#name
huge.RawURLDelParam(rawUrl, "page")             // http://www.aspxfans.com:8080/news/index.asp?boardID=520#name
huge.RawURLSetParam(rawUrl, "boardID", "521")   // http://www.aspxfans.com:8080/news/index.asp?boardID=521&page=1&page=2#name

Crypto

Some useful functions can be used to create Hash, HMAC and crypt data.

import (huge "github.com/dablelv/go-huge-util"
)// Hash functions
huge.MD5L("")   // d41d8cd98f00b204e9800998ecf8427e
huge.MD5U("")   // D41D8CD98F00B204E9800998ECF8427Ehuge.SHA1L("")  // da39a3ee5e6b4b0d3255bfef95601890afd80709
huge.SHA1U("")  // DA39A3EE5E6B4B0D3255BFEF95601890AFD80709huge.SHA224L("")    // d14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42f
huge.SHA224U("")    // D14A028C2A3A2BC9476102BB288234C415A2B01F828EA62AC5B3E42Fhuge.SHA256L("")    // e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
huge.SHA256U("")    // E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855huge.SHA384L("")    // 38b060a751ac96384cd9327eb1b1e36a21fdb71114be07434c0cc7bf63f6e1da274edebfe76f65fbd51ad2f14898b95b
huge.SHA384U("")    // 38B060A751AC96384CD9327EB1B1E36A21FDB71114BE07434C0CC7BF63F6E1DA274EDEBFE76F65FBD51AD2F14898B95Bhuge.SHA512L("")    // cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e
huge.SHA512U("")    // CF83E1357EEFB8BDF1542850D66D8007D620E4050B5715DC83F4A921D36CE9CE47D0D13C5D85F2B0FF8318D2877EEC2F63B931BD47417A81A538327AF927DA3E// HMAC functions
huge.HMACMD5L("", "")   // 74e6f7298a9c2d168935f58c001bad88
huge.HMACMD5U("", "")   // 74E6F7298A9C2D168935F58C001BAD88huge.HMACSHA1L("", "")  // fbdb1d1b18aa6c08324b7d64b71fb76370690e1d
huge.HMACSHA1U("", "")  // FBDB1D1B18AA6C08324B7D64B71FB76370690E1Dhuge.HMACSHA224L("", "")    // 5ce14f72894662213e2748d2a6ba234b74263910cedde2f5a9271524
huge.HMACSHA224U("", "")    // 5CE14F72894662213E2748D2A6BA234B74263910CEDDE2F5A9271524huge.HMACSHA256L("", "")    // b613679a0814d9ec772f95d778c35fc5ff1697c493715653c6c712144292c5ad
huge.HMACSHA256U("", "")    // B613679A0814D9EC772F95D778C35FC5FF1697C493715653C6C712144292C5ADhuge.HMACSHA384L("", "")    // 6c1f2ee938fad2e24bd91298474382ca218c75db3d83e114b3d4367776d14d3551289e75e8209cd4b792302840234adc
huge.HMACSHA384U("", "")    // 6C1F2EE938FAD2E24BD91298474382CA218C75DB3D83E114B3D4367776D14D3551289E75E8209CD4B792302840234ADChuge.HMACSHA512L("", "")    // b936cee86c9f87aa5d3c6f2e84cb5a4239a5fe50480a6ec66b70ab5b1f4ac6730c6c515421b327ec1d69402e53dfb49ad7381eb067b338fd7b0cb22247225d47
huge.HMACSHA512U("", "")    // B936CEE86C9F87AA5D3C6F2E84CB5A4239A5FE50480A6EC66B70AB5B1F4AC6730C6C515421B327EC1D69402E53DFB49AD7381EB067B338FD7B0CB22247225D47// Encryption functions
p := []byte("plaintext")
key16 := []byte("12345678abcdefgh")
c, _ := Base64AESCBCEncrypt(p, key16) // A67NhD3RBiNaMgG6HTm8LQ==
p, _ = Base64AESCBCDecrypt(c, key16)  // plaintextkey8 := []byte("12345678")
c, _ := Base64DESCBCEncrypt(p, key8) // UZS/y4By6ksePYMBbvZdig==
p, _ := Base64DESCBCDecrypt(c, key8) // plaintextkey24 := []byte("12345678abcdefgh12345678")
c, _ := Base64TriDESCBCEncrypt(p, key24) // dau0DzmDGQbHasZaOvxxwg==
p, _ := Base64TriDESCBCDecrypt(c, key24) // plaintext

Rand

Some functions to create a real non-negative random int number, specified length random string, and so on.

huge.GetRandInt()               // 2040723487295132865
huge.GetRandIntn(100)           // 49
huge.GetRandIntRange(0, 100)    // 44
huge.GetRandByteSlice(3)        // [241 16 101]
huge.GetRandStr(3)              // dAt
huge.GetRandLowerStr(3)         // lts
huge.GetRandUpperStr(3)         // YUT

JSON

Some convert function about to json.

student := struct {Hobby   stringAge     int32
}{Hobby: "pingpopng",Age:   28,
}
huge.ToIndentJSON(&student)
/*
output:
{"Hobby": "pingpopng","Age": 28
}
*/

Other

Some useful functions now unclassified. Of course, it may be classified and moved to a new go file in the future.

b, _ := VerGTVer("1.0.5", "1.0.4")   // true
b, _ := VerLTVer("1.0.5", "2.0.4")   // true
b, _ := VerGEVer("2.0.4", "2.0.4")   // true
b, _ := VerLEVer("1.0.5", "1.0.5")   // true

Summary

The above examples is just the tip of the iceberg. For more usage, please read the source code.

Due to the limited personal ability, you are welcome to criticize and correct. Of course, welcome to join in the construction of this library.

Golang go-huge-util 工具库介绍相关推荐

  1. 开发知识竞赛答题活动小程序过程中使用到的实用工具库介绍

    前言 我在做知识竞赛答题活动小程序经常需要处理一些比较基础的事情,比如时间.数组.数字.对象.字符串等处理,自己造轮子的话成本会比较高.这时候我们可以去找一些别人已经写好的开源模块或者开源库,我们直接 ...

  2. (NLP) 淘宝评论处理(1)--工具库介绍

    #文章大纲及涉及的工具库 最近在接触自然语言处理的项目,对目前的情况做一个总结: 项目目标 相关工具库 自然语言处理的基本流程 进一步处理及相关的算法和知识 目前的进展以及所面临的问题 ##项目目标 ...

  3. 图解数据分析(12) | Pandas - 数据分析工具库介绍(数据科学家入门·完结)

    作者:韩信子@ShowMeAI 教程地址:https://www.showmeai.tech/tutorials/33 本文地址:https://www.showmeai.tech/article-d ...

  4. c++的一些工具库介绍

    撰文/ 曾毅 陶文 最后更新:2004年6月12日 声明: .本文2004年5月首发于<CSDN开发高手>,版权归该杂志与<程序员>杂志社所有.杂志限于篇幅部分内容有所删节,此 ...

  5. Lodash-一个一致性、模块化、高性能的 JavaScript 实用工具库介绍

    官网:https://www.lodashjs.com 一.为什么选择 Lodash ? Lodash 通过降低 array.number.objects.string 等等的使用难度从而让 Java ...

  6. python telnet server_python工具库介绍-dubbo:通过telnet接口访问dubbo服务

    简介 dubbo服务发布之后,我们可以利用telnet命令进行调试.管理.更多资料参见 Telnet命令参考手册 telnet 调用示例: $ telnet 172.17.103.110 9097 T ...

  7. python写入excel公式有哪些库_python工具库介绍-xlwt 创建xls文件(excel)

    简介 参考资料: 下载地址:xlwt 文件备份地址:qq群:630011153 技术支持qq群: 144081101 591302926 567351477 钉钉免费群:21745728 快速入门 下 ...

  8. jsplumb php,jsplumb 中文教程 连线绘图工具库介绍 附简单在线demo与实战项目

    1. jsplumb 中文基础教程 后续的更新会直接在github上,如需查看最新文档,请直接访问原始仓库. 另外用了七牛的测试域名做图片托管,现在发现很多图片都无法显示了,建议直接参看git仓库里的 ...

  9. GoLang语言多版本管理工具--GVM入门介绍

    GoLang语言多版本管理工具--GVM入门介绍 GVM 由Josh Bussdieker(jbuss,jaja,jbussdieker)在Moovweb工作期间 GVM提供了一个管理Go版本的界面. ...

  10. Python-EEG工具库MNE中文教程(13)-“bad“通道介绍

    目录 标记坏频道/标记不良通道(marking bad channels) 本分享为脑机学习者Rose整理发表于公众号:脑机接口社区 .QQ交流群:903290195 本教程主要介绍手动标记坏通道以及 ...

最新文章

  1. iOS 打电话回到当前应用
  2. c# ftp类[转]
  3. 自学Java-运算符
  4. PyQt5 技术篇-鼠标移动控件显示提示,Qt Designer控件提示设置方法。
  5. 3、ShardingSphere 之 Sharding-JDBC 实现水平分库
  6. Linux搭建Node.js环境
  7. spring-使用配置文件完成JdbcTemplate操作数据库
  8. mysql约束深入了解_MySQL 的约束
  9. future java 多线程_Java多线程之Future与FutureTask
  10. 小白初涉,先试试水。涉及Python,C语言基础,机器学习等
  11. java字符串遮蔽处理_java 字符串处理
  12. [BZOJ 3709] Bohater
  13. java做一个简单的银行账户演示程序_JAVA初学(七):银行账户演示程序
  14. QT入门(六)——代码创建计算器界面|可以计算的简易计算器|按键的关联
  15. CC2500的CCA
  16. Python实现支持人机对战的五子棋软件(超详细)
  17. EXCEL公式获取幂函数系数解析
  18. 档案管理学川大972 | 档案信息资源开发与利用
  19. MySQL事务之幻读问题
  20. vim编辑器的简单使用(参考别人文章的学习笔记)

热门文章

  1. HDU5855(最大权闭合图构图技巧+裸的最大流)
  2. 京瓷m1025维修模式进不去_京瓷m1025维修模式进不去_使用中,电脑突然蓝屏?千米电脑维修工程师告诉你原因!......
  3. [快速学会Swift第三方库] SwiftyJSON篇
  4. 台式计算机如何自动关机,台式电脑如何设置定时关机
  5. Py之lime:lime库的简介、安装、使用方法之详细攻略
  6. 2015腾讯校园招聘(菜鸟逆袭腾讯,offer get)
  7. Could not get a resource since the pool is exhausted
  8. Html中 发光字体 的CSS属性
  9. S3C2440 SDRAM内存驱动
  10. 华为鸿蒙系统操作教程_鸿蒙OS Beta版怎么使用