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

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

在 Go 中使用 stdlib 中未導出的函數/類型

在 Go 中使用 stdlib 中未導出的函數/類型

Go
DIEA 2023-06-05 19:44:26
免責聲明:是的,我知道這不是“應該做的”和“使用接口組合和委托”和“語言的作者更清楚”。然而,我面臨著從標準庫中復制粘貼并創建我自己的包,或者按照我的要求做的選擇。所以請不要回復“你想做的是錯誤的,你是一個糟糕的開發者,你應該感到難過”。所以,在 Go 中我們有httpstdlib 包。這個包有許多處理 HTTP Range 標頭和響應的函數(解析器,“偏移量+大小”的結構等等)。出于各種原因,我想使用一些非常相似ServeContent但工作方式有點不同的東西(長話短說 - 做體操所需的管道數量ReaderAt對于我想要完成的事情來說不是最佳的)所以我想Range自己解析 HTTP 標頭,使用 stdlib 包中的實用函數/結構http,然后手動處理它們。ServeContent基本上,我想要:-)的更改版本有沒有辦法讓我“重新打開” httpstdlib 包以使用它的未導出標識符?ABI 對我來說不是問題,因為源是我的,程序每次都是從頭開始編譯等等,它不需要與舊版/其他 Go 版本的二進制兼容性。即我能夠確保構建將在特定的 Go 版本上完成,并且有測試來檢查未導出的標識符是否消失。所以...如果有一個foo在 Go 標準庫中調用的包,但它只公開了一個MagicMegamethod我不需要的東西,并且使用了usefulFunc我usefulStruct想要訪問的東西,我有沒有辦法訪問這些標識符?通過重新打開包,或使用其他方式......不涉及從 stdlib 復制粘貼數十行而不進行測試等。
查看完整描述

1 回答

?
HUH函數

TA貢獻1836條經驗 獲得超4個贊

存在(相當可怕的)訪問未導出符號的方法,但它需要大量的棘手代碼,因此不太可能獲得凈勝利。

FWIW 我個人只是從標準庫中復制我需要的代碼并根據我的需要進行調整。


查看完整回答
反對 回復 2023-06-05
  • 1 回答
  • 0 關注
  • 180 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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