Go选手如何快速上手第三方库
作为Java选手,第三方库是避免不了的,作为golang萌新,面对golang的陌生的接口写法,如何快速上手?
本期以 "github.com/mojocn/base64Captcha"这个生成验证码的库入局
我们快速定位到我们要用的方法,生成验证码的类
理所当然是 NewCaptcha 方法,可以看到需要定义的结构体
type Captcha struct {Driver DriverStore Store
}
我们继续查看Driver和Store结构体
先来说Driver,可以看到是个接口类型,而且源码中有多个实现
第一个参数是验证码的驱动形式,可以看到有多种验证码,中文、数字、英语、数字等,我们使用最简单的数字驱动
使用该结构体提供的方法,new出一个驱动即可完成第一个参数
// 创建数字验证码的驱动driver := base64Captcha.NewDriverDigit(global.Config.Captcha.Height,global.Config.Captcha.Width,global.Config.Captcha.Length,global.Config.Captcha.MaxSkew,global.Config.Captcha.DotCount,)
第二个参数是接收验证码的对象,依然是个接口类型
我们寻找该接口的具体实现类,可以找到 memoryStore 结构体
我们继续寻找该结构体的new方法在何处被调用
发现有一个default方法中调用了该结构体的new方法,我们点进去
于是我们如愿以偿的找到了一个Store的默认实现,被定义在全局变量中,我们就可以使用该全局变量啦