亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

gin golang:什么是 gin.Context.Keys

gin golang:什么是 gin.Context.Keys

Go
一只甜甜圈 2022-10-24 09:19:32
我試圖使用go-gincontext.GetBool框架中的方法(here)和一些查詢參數。它不能作為例外工作,我認為它不是由查詢參數填充的。Context.Keys所以我的問題是:什么是gin.Context.Keys,以及在發出請求時應該如何填充?PS:這個問題已經在這里問過了,但是沒有正確的答案。
查看完整描述

1 回答

?
呼如林

TA貢獻1798條經驗 獲得超3個贊

tl;drKeys字段支持 Gin 的 Contextcontext.Context接口實現作為請求范圍的鍵/值載體。


我認為 Context.Keys 不是由查詢參數填充的。

正確的。Context.Keys與查詢參數無關。查詢參數可用于Context.Query.

相反Keys,結構字段上的文檔顯示:

Keys 是專門用于每個請求上下文的鍵/值對。

這些鍵/值對可以通過Get和訪問Set。后一個的文檔是:

Set 用于專門為此上下文存儲新的鍵/值對。如果之前沒有使用它,它也會延遲初始化 c.Keys。

因此該字段類似于context包的Context.WithValueContext.Value,例如請求范圍的參數。Gin 的上下文Keys是存儲原始鍵/值對的導出映射。諸如此類的方法GetBool很方便,因為您不必interface{}自己對值進行類型斷言。

與其他 Web 框架不同,Gin 的 Context 不包裝context.Context值(除了c.Request.Context),而是直接實現接口。這包括Value方法本身,它也訪問底層Keys字段。

順便說一句,與標準 libcontext實現的一個重要區別是context.Context接受interface{}鍵,而 Gin 的 Context 只接受string鍵。


查看完整回答
反對 回復 2022-10-24
  • 1 回答
  • 0 關注
  • 141 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號