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

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

錯誤“panic: 無法從 nil 父級創建上下文” 后更新到 Go 1.15 或更高版本

錯誤“panic: 無法從 nil 父級創建上下文” 后更新到 Go 1.15 或更高版本

Go
LEATH 2022-09-26 15:20:32
更新到Go 1.15后,我在運行代碼(單元測試)時收到此錯誤:恐慌:無法從 nil 父級創建上下文Goroutine 14 [running]: testing.trunner.func1.2(0x1211480, 0x12a3dc8) /usr/local/opt/go/libexec/src/testing/testing.go:1143 +0x332 testing.trunner.func1(0xc000178900) /usr/local/opt/go/libexec/src/testing/testing.go:1146 +0x4b6 panic(0x1211480,0x12a3dc8) /usr/local/opt/go/go/libexec/src/運行時/panic.go:965 +0x1b9上下文。WithValue(0x0, 0x0, 0x1210940, 0x12a3f58, 0x187 github.com/myrepo/pkg/test.Test_failure 0x1241b80, 0xc00007c910 0x15f, 0xc000765200 0x12a3f58, 0xc00004a770) /usr/本地/選擇/go/libexec/src/上下文/上下文/上下文 go:521 +0x187這是我的代碼:ctx := context.WithValue(nil, "some string", nil) req := http.Request{} req = *req.WithContext(ctx)
查看完整描述

2 回答

?
HUX布斯

TA貢獻1876條經驗 獲得超6個贊

如果您沒有上游上下文,請使用或作為種子,如果您有,則傳遞該上下文。context.Background()context.TODO()

您可以在此處看到文檔說上下文。背景()應用作初始種子。https://pkg.go.dev/context#Background

函數背景 ? 函數背景() 上下文背景返回一個非零的空上下文。它永遠不會被取消,沒有值,也沒有截止日期。它通常由 main 函數、初始化和測試使用,并用作傳入請求的頂級上下文。

一般來說,你不應該把零放在第一位。


查看完整回答
反對 回復 2022-09-26
?
大話西游666

TA貢獻1817條經驗 獲得超14個贊

根據 Go 1.15 文檔,不再允許傳入零父級:

現在明確不允許使用 nil 父級創建派生上下文。任何嘗試使用“使用”值“、”使用刪除“或”使用取消“函數執行此操作都將導致恐慌。

為了解決這個問題,我最終使用了上下文。待辦事項()

ctx := context.WithValue(context.TODO(), "some string", nil)

TODO 返回一個非零的空上下文。代碼應使用上下文。TODO,當不清楚要使用哪個上下文或尚不可用時(因為周圍的函數尚未擴展以接受 Context 參數)。


查看完整回答
反對 回復 2022-09-26
  • 2 回答
  • 0 關注
  • 103 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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