![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Go-Package
y果子
愿你成为自己的太阳,无需借助谁的光
展开
-
html/template
库(html/template):是go实现了数据驱动的模板,用于生成可对抗代码注入的安全HTML输出。简单说就是对html,css,javascript进行安全转换;例如对html中的<div>这个标签的特殊字符<>进行转换。还有用于生成安全的html模版代码的方法。与之相似还有另一个包 text/template,只是前者解析html,后者解析普通文本字符串而已。常见的几个html转义字符:package mainimport ( "fmt" "html" "原创 2020-11-13 18:26:54 · 949 阅读 · 0 评论 -
Gin 框架
Gin框架介绍Gin是一个用 Go (Golang) 编写的 web 框架。它是一个类似于martini但性能更好的API框架,不同于谢大主导的Beegoweb框架,后者更像是Python语言中的Django框架,内部包含了开发一个web程序所需的各种组件。如果你是性能和高效的追求者,我相信你会像我一样爱上Gin。同时,不同于其他Golang语言的API框架,该框架社区十分活跃,并且主程仍然在不断更新和改进,我们知道通常情况下在选择一个开源的软件或者相关库时,社区的活跃度以及项目的更新情况会非常重要(转载 2020-11-03 11:40:02 · 972 阅读 · 0 评论 -
crypto/md5
先认识go的hash接口(位于go标准库-hash包):type Hash interface { // 通过io.Writer接口的Write方法向hash中添加数据 io.Writer // 返回添加b到当前的hash值后的新切片,不会改变底层的hash状态,这个方法就是返回计算后的hash值,只是它是字符切片 Sum(b []byte) []byte // 重设hash为无数据输入的状态,就是清空hash之前写入的数据 Reset() // 返原创 2020-10-30 18:39:33 · 1546 阅读 · 0 评论 -
Golang Time
基础使用//获取秒级时间戳time.Now().Unix()//获取毫秒级时间戳time.Now().UnixNano()/1e6//格式化时间time.Now().Format("2006-01-02 15:04")//字符串转时间格式t, err := time.Parse("2006-01-02 15:04:05", "2019-05-20 18:30:50")//时间戳转为字符串t := time.Unix("1558348250", 0).Format("2006-01原创 2020-10-15 19:34:49 · 1986 阅读 · 0 评论 -
go-regexp
golang Regexp主要提供如下正则所表示的16个方法:Find(All)?(String)?(Submatch)?(Index)?若带All,该方法返回一个所有递进匹配结果的slice;该方法需要额外传一个整数n,若n>=0,至多返回n个匹配或子匹配,若x<0,返回全部。若带String,该方法传入的参数需是string,否则为字节slice,返回结果也为对应的string。若带Submatch,该方法返回表达式递进的子匹配slice(子匹配匹配以括号扩起的表达式,也称作匹配组转载 2020-10-15 15:52:20 · 974 阅读 · 0 评论 -
github.com/sirupsen/logrus
https://blog.csdn.net/wslyk606/article/details/81670713golang日志库golang标准库的日志框架非常简单,仅仅提供了print,panic和fatal三个函数对于更精细的日志级别、日志文件分割以及日志分发等方面并没有提供支持。所以催生了很多第三方的日志库,但是在golang的世界里,没有一个日志库像slf4j那样在Java中具有绝对统治地位。golang中,流行的日志框架包括logrus、zap、zerolog、seelog等。 logrus是转载 2020-10-15 14:48:20 · 2711 阅读 · 0 评论 -
github.com/garyburd/redigo/redis. Redis--go
rediogo 标准go redis 官方库 获取:go get github.com/garyburd/redigo/redis连接redispackage mainimport ( "fmt" "github.com/garyburd/redigo/redis")func main() { c, err := redis.Dial("tcp", "127...原创 2020-08-04 10:21:28 · 2242 阅读 · 1 评论 -
github.com/stretchr/testify/suite
import "github.com/stretchr/testify/suite"软件包套件包含用于创建测试套件结构并将这些结构上的方法作为测试运行的逻辑. 该软件包最有用的部分是,您可以在测试套件上创建安装/拆卸方法,该方法将在整个套件或单个测试之前/之后运行(取决于您实现的接口).通常,通过首先从suite.Suite中扩展内置套件功能来构建测试套件. 另外,您也可以根据需要自行重现该逻辑(您只需要从suite / interfaces.go中实现TestingSuite接口即可).之后,您可转载 2020-08-10 19:30:00 · 1853 阅读 · 0 评论 -
github.com/gin-gonic/gin. Gin--EngineGroup
https://juejin.im/post/6844903789300826125轻量级 Web 框架 Gin 结构分析Go 语言最流行了两个轻量级 Web 框架分别是 Gin 和 Echo,这两个框架大同小异,都是插件式轻量级框架,背后都有一个开源小生态来提供各式各样的小插件,这两个框架的性能也都非常好,裸测起来跑的飞快。本节我们只讲 Gin 的实现原理和使用方法,Gin 起步比 Echo 要早,市场占有率要高一些,生态也丰富一些。go get -u github.com/gin-gonic/gi转载 2020-08-10 20:09:01 · 1083 阅读 · 0 评论 -
github.com/go-xorm/xorm. XORM-Engine Group
https://www.bookstack.cn/read/go-xorm-0.6.5/README.mdhttps://www.bookstack.cn/read/go-xorm-0.6.5/chapter-01-2.engine_group.md创建 ORM 引擎所有操作均需要事先创建并配置 ORM 引擎才可以进行。XORM支持两种 ORM 引擎,即 Engine 引擎和 Engine Group 引擎。一个 Engine 引擎用于对单个数据库进行操作,一个 Engine Group 引擎用于转载 2020-08-10 20:21:57 · 1342 阅读 · 0 评论 -
github.com/golang/mock/gomock. GoMock 框架及 测试用例. go generate 相结合
要写出好的测试代码,必须精通相关的测试框架。对于Golang的程序员来说,至少需要掌握下面四个测试框架:GoConveyGoStubGoMockMonkeyGoMock是由Golang官方开发维护的测试框架,实现了较为完整的基于interface的Mock功能,能够与Golang内置的testing包良好集成,也能用于其它的测试环境中。GoMock测试框架包含了GoMock包和mockgen工具两部分,其中GoMock包完成对桩对象生命周期的管理,mockgen工具用来生成interface对转载 2020-08-21 14:39:34 · 2305 阅读 · 0 评论 -
github.com/golang/glog. Golang glog使用详解
https://www.cnblogs.com/sunsky303/p/11081165.htmlpackage mainimport ( "flag" "github.com/golang/glog")func main() { flag.Parse() defer glog.Flush() glog.Info("This is info message") glog.Infof("This is info message:%v",12345) glog.InfoDepth(1原创 2020-09-11 18:35:09 · 2344 阅读 · 0 评论 -
github.com/aliyun/aliyun-oss-go-sdk/oss. 对象存储OSS
对象存储OSS的Go SDK各种使用场景下的示例代码:https://help.aliyun.com/document_detail/32144.html快速入门:package mainimport ( "fmt" "github.com/aliyun/aliyun-oss-go-sdk/oss" "os")// OSS Go SDK// 创建存储空间(Bucket)、上传/下载文件(Object)func handleError(err error) { fmt.Print原创 2020-10-12 15:58:48 · 1664 阅读 · 1 评论 -
Golang os包下常用的系统相关操作
环境变量相关Getenv函数func Getenv(key string) string 功能:获取系统key的环境变量,如果没有环境变量就返回空示例:func main() { gopath := os.Getenv("GOPATH") fmt.Println(gopath)}Setenv函数func Setenv(key, value string) error 功能:设定环境变量,经常与Getenv连用,用来设定环境变量的值func原创 2020-09-07 14:39:04 · 1136 阅读 · 0 评论 -
strings 包中的函数和方法
Golang学习 - strings 包strings 包与 bytes 包中的函数用法基本一样,不再赘述。只对 Replacer 进行说明。// 转换func ToUpper(s string) stringfunc ToLower(s string) stringfunc ToTitle(s string) stringfunc ToUpperSpecial(_case unicode.SpecialCase, s string) stringfunc ToLowerSpecial(原创 2020-09-14 14:22:48 · 528 阅读 · 0 评论 -
go-reflect 2
package mainimport ( "fmt" "reflect")type order struct { ordId int customerId int}/*func createQuery(o order) string { i := fmt.Sprintf("insert into order values(%d,%d",o.ordId,o.customerId) return i}*/// 创建通用的查询生成器// reflect.Type 表示 int.原创 2020-09-16 15:44:37 · 329 阅读 · 0 评论 -
github.com/davecgh/go-spew/spew
通过经常通过调试的方式查找问题的原因,解决问题,尤其是当遇到一个很棘手的问题的时候,就需要知道一段代码在执行的过程中,其上下文的变量对应的数据,以便进行推测出问题的原因。对于这类调试,我们用的比较多的一个是断点调试,还有是通过打印日志输出。通过日志打印的话,可能一开始常用的就是fmt.Println输出,简单,边界。如果我们再想看一些更多信息的话,比如行号,可以通过log包。package mainimport ( "fmt" "log")func main() { i := 0 s原创 2020-10-15 14:16:30 · 1150 阅读 · 0 评论 -
Golang context 包
对于 Golang 开发者来说context(上下文)包一定不会陌生。但很多时候,我们懒惰的只是见过它,或能起到什么作用,并不会去深究它。应用场景:在 Go http 包的 Server 中,每一个请求在都有一个对应的goroutine去处理。请求处理函数通常会启动额外的goroutine用来访问后端服务,比如数据库和 RPC 服务。用来处理一个请求的goroutine通常需要访问一些与请求特定的数据,比如终端用户的身份认证信息、验证相关的 token、请求的截止时间。当一个请求被取消或超时时,所有用来处原创 2020-08-26 17:09:45 · 229 阅读 · 0 评论 -
Go-log
package mainimport ( "log")// 使用init 函数,这个函数在main 函数执行之前就可以初始化// 自定义的日志抬头信息为:时间 + 文件名 + 源代码所在行号(就是log.Ldata | log.Lshortfile)// 通过log.SetFlags 进行设置func init() { //log.SetFlags(log.Ldate | log.Lshortfile) //日期+文件和行号 //log.SetFlags(log.Ldate | l原创 2020-08-05 11:50:57 · 315 阅读 · 0 评论 -
Go-flag
package mainimport ( "flag" "fmt")//定义命令行参数对应的变量,这三个变量都是指针类型//flag 名称为name,name的默认值为nick,name的提示信息,返回的是一个指针类型clinNme,所以获取返回的值应该是 fmt.Println(*cliName)var cliName = flag.String("name","nick","Input your name")var cliAge = flag.Int("age",28,"Input原创 2020-08-04 20:28:59 · 245 阅读 · 0 评论 -
github.com/gin-gonic/gin 中间件
https://www.jianshu.com/p/98965b3ff638/github.com/gin-gonic/gin是一个轻量级的 WEB 框架,支持 RestFull 风格 API,支持 GET,POST,PUT,PATCH,DELETE,OPTIONS 等 http 方法,支持文件上传,分组路由,Multipart/Urlencoded FORM,以及支持 JsonP,参数处理等等功能,这些都和 WEB 紧密相关,通过提供这些功能,使开发人员更方便地处理 WEB 业务。使用 GET, PO原创 2020-09-18 18:40:22 · 2041 阅读 · 0 评论 -
github.com/prometheus/client_golang/prometheus/promhttp 使用golang编写Prometheus Exporter
Exporter是基于Prometheus实施的监控系统中重要的组成部分,承担数据指标的采集工作,官方的exporter列表中已经包含了常见的绝大多数的系统指标监控,比如用于机器性能监控的node_exporter, 用于网络设备监控的snmp_exporter等等。这些已有的exporter对于监控来说,仅仅需要很少的配置工作就能提供完善的数据指标采集。有时我们需要自己去写一些与业务逻辑比较相关的指标监控,这些指标无法通过常见的exporter获取到。比如我们需要提供对于DNS解析情况的整体监控,了解如原创 2020-10-14 11:00:01 · 3267 阅读 · 0 评论 -
github.com/google/uuid
uuid是Universally Unique Identifier的缩写,即通用唯一识别码。uuid的目的是让分布式系统中的所有元素,都能有唯一的辨识资讯,而不需要透过中央控制端来做辨识资讯的指定。如此一来,每个人都可以建立不与其它人冲突的 uuid。uuid是谷歌开发的生成16字节UUID的模块,实现了RFC4122;对UUID的v1,v2,v3,v4,v5等各个版本都有实现。一般来说,如果只是要生成唯一序列号的话,通常用v4版本,New()和NewRandom()都可以生成v4, New是对New原创 2020-10-14 20:56:09 · 2271 阅读 · 0 评论