在Go語(yǔ)言中,Context是一個(gè)接口類(lèi)型,用于在處理請(qǐng)求時(shí)傳遞請(qǐng)求的上下文信息。Context提供了一個(gè)機(jī)制,允許攜帶請(qǐng)求的元數(shù)據(jù),但不希望在每個(gè)函數(shù)簽名中都明確地森局傳遞這些值。當(dāng)你在處理 HTTP 請(qǐng)求時(shí),你就會(huì)面臨這樣的情況,尤其是在經(jīng)過(guò)多個(gè)中間件處理之后。因此,可以將 Context 視為一個(gè)鍵值對(duì),封裝了請(qǐng)求可以訪(fǎng)問(wèn)的關(guān)鍵信息,例如:認(rèn)證信息、其他處理程序的配置、帶有數(shù)據(jù)的參數(shù)等等。可以使悉春搜用 context.WithValue() 函數(shù)將值存儲(chǔ)在睜歷上下文中,并在請(qǐng)求處理程序之間傳遞它們。在處理 HTTP 請(qǐng)求時(shí),可以使用 request.Context() 函數(shù)獲取請(qǐng)求上下文,并將上下文傳遞給請(qǐng)求處理程序。通過(guò)調(diào)用 context.WithCancel 或 context.WithDeadline,可以向 context 中添加取消信號(hào)。這樣,當(dāng)需要停止處理請(qǐng)求時(shí),請(qǐng)求處理程序就可以響應(yīng)該信號(hào)。總之,Context的作用非常重要,在進(jìn)行復(fù)雜的請(qǐng)求處理時(shí),熟練地掌握其使用方法可以提高代碼的質(zhì)量和效率。

創(chuàng)新互聯(lián)科技有限公司專(zhuān)業(yè)互聯(lián)網(wǎng)基礎(chǔ)服務(wù)商,為您提供綿陽(yáng)服務(wù)器托管,高防主機(jī),成都IDC機(jī)房托管,成都主機(jī)托管等互聯(lián)網(wǎng)服務(wù)。
Package context 中定義了 Context 類(lèi)型, 用于跨 API 或跨進(jìn)程之間傳遞數(shù)據(jù),包含 deadlines, cancellation signals, 以及其他 request-scoped values 。
對(duì)服務(wù)器的傳入請(qǐng)求應(yīng)該創(chuàng)建一個(gè)Context上下文,對(duì)服務(wù)器的傳出調(diào)用應(yīng)該接受一個(gè)Context上下文。它們之間的函數(shù)調(diào)用鏈必須傳播 Context,可選擇將其替換為使用 WithCancel、WithDeadline、WithTimeout 或 WithValue 創(chuàng)建的派生 Context。
當(dāng)一個(gè)上下文 Context 被取消時(shí),所有從它派生的上下文也被取消。
使用Context上下文的程序應(yīng)遵循以下規(guī)則,以保持跨包的接口一致,并啟用靜態(tài)分析工具來(lái)檢查上下文含亂傳播:
1.不要將上下文存儲(chǔ)在結(jié)構(gòu)類(lèi)型中;
2.相反,將 Context 顯式傳遞給需要它的每個(gè)函數(shù)。
3.即使函數(shù)允許,也不要傳遞 nil 上下文。
4.如果不確定要使用哪個(gè) Context,請(qǐng)傳遞 context.TODO。
5.僅將Context值用于傳輸流程和 API 請(qǐng)求范圍的數(shù)據(jù)(request-scoped data),not for passing optional parameters to functions.
6.相同的 Context 可以傳遞給在不同的 goroutine 中運(yùn)行的函數(shù) (Context's methods may be called by multiple goroutines simultaneously.);談旅檔上下文 Context 對(duì)于多個(gè) goroutine 同時(shí)使用是安全的。
Context 應(yīng)該鎮(zhèn)敏是第一個(gè)參數(shù),通常命名為 ctx:
網(wǎng)頁(yè)題目:關(guān)于go語(yǔ)言context的信息
鏈接地址:http://chinadenli.net/article41/dspjihd.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供、網(wǎng)站制作、面包屑導(dǎo)航、小程序開(kāi)發(fā)、用戶(hù)體驗(yàn)、品牌網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)