不用接口,不用结构体,在单纯的方法中,怎样获取iris.Context
?
正常是这么写的
func test(ctx iris.Context) {
ctx.URLParam("name")
}
但如果不给方法传参数应该怎么写?
试过下面的,报错。难道要把context
作为全局变量去调用吗?
func test() {
var ctx iris.Context
ctx.URLParam("name")
}
不用接口,不用结构体,在单纯的方法中,怎样获取iris.Context
?
正常是这么写的
func test(ctx iris.Context) {
ctx.URLParam("name")
}
但如果不给方法传参数应该怎么写?
试过下面的,报错。难道要把context
作为全局变量去调用吗?
func test() {
var ctx iris.Context
ctx.URLParam("name")
}
一般像这种不太建议你这么做,要么直接传参数进去,要么使用 context.Context 包携带值进去
type ctxKey byte
var irisCtxKey ctxKey
func TestContext(ctx context.Context) {
if ictx,ok := ctx.Value(irisCtxKey).(*iris.Context) ; ok {
val := ictx.URLParam("k")
}
}
func main(){
ctx := context.Background()
ctx = context.WithValue("k1", 1)
ctx = context.WithValue(irisCtxKey, irisCtx) // 从请求中来
TestContext(ctx)
}
7 回答5.3k 阅读
6 回答6.9k 阅读✓ 已解决
4 回答2.3k 阅读
1 回答2k 阅读✓ 已解决
1 回答3.4k 阅读
2 回答2.2k 阅读
1 回答2.1k 阅读
ctx iris.Context
这个对象是在HTTP Server 接受到请求后构建的,之后解析你注册的路由找到路由对应的方法,并传入参数。所有不存在单纯在方法中提取这个参数。