Go的请求流程中,不存在”全局变量”获取请求参数的方式,只有将上下文context变量传递到后续流程的方法中,而context上下文变量即包含了所有需要传递的共享变量。并且该中的共享变量应当是事先约定的,并且往往存储为对象指针形式。

    结构定义

    在该示例中,我们的上下文变量的数据结构定义为:

    https://github.com/gogf/gf-demos/blob/master/app/model/context.go

    逻辑封装

    https://github.com/gogf/gf-demos/blob/master/app/service/context.go

    上下文变量注入

    上下文的变量必须在请求一开始便注入到请求流程中,以便于其他方法调用,因此我们使用中间件来实现。

    上下文变量 - 图2

    上下文变量使用

    约定俗成的,方法的第一个参数往往预留给context.Context类型参数使用,以便接受上下文变量,特别是层的方法。例如: