go

golang中的接口使用

golang 中的接口和别的面向对象中的接口有很大的不同。 接口的定义 //定义一个接口,它有一个run 方法 type Runable interface { run() } 定义一个Runable 接口,它有一个方法,run() , 这个方法没有...

使用gin搭建api后台系统之中间件开发

在之前的文章中,基本上都是使用的默认的 gin.Default() 来初始化一个引擎,之后再调用引擎的Run方法来运行一个web服务,现在如果有个需求,某些api只有管理员权限的才可以进行访问,非管理员的就很401,我们可以...

使用gin搭建api后台系统之redis

redis 在web系统中有着非常重要的地位,可以充当缓存,消息队列,分步式锁等,本文介绍一下使用go-redis这个库来简单地操作redis。 环境准备 使用docker 本地启一个redis docker run --name myredis -p 63...

golang中map与切片的函数传参

在golang 的函数参数,如果参数是值类型的话,如果在函数中修改参数值是不会影响原变量的,因为在函数操作中是会进行一次值拷贝的,如果希望函数的修改影响原变量,则需要传指针方式。如以下代码,是不会改变原变...

golang中的锁

在golang中,goroutine 可以理解为其它语言中的线程,在其它语言中存在的数据竞态的问题,在golang中同样存在 本文记录一下数据竞态与各种锁的使用 race condition 竞争状态 这个词也没有听起来很高大上,...

golang中锁Mutex与通道channel的选择

Mutex和channel 都可以在并发环境下对资源进行保护,避免竞态, channel 在 golang 中一直被追捧,但是既然都能解决问题,但为什么还要弄两个东西呢? 查阅一些文章,发现有些时候对于channel过于追捧了。有时...