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

HUH函數(shù)
TA貢獻(xiàn)1836條經(jīng)驗 獲得超4個贊
存在(相當(dāng)可怕的)訪問未導(dǎo)出符號的方法,但它需要大量的棘手代碼,因此不太可能獲得凈勝利。
FWIW 我個人只是從標(biāo)準(zhǔn)庫中復(fù)制我需要的代碼并根據(jù)我的需要進(jìn)行調(diào)整。
- 1 回答
- 0 關(guān)注
- 195 瀏覽
添加回答
舉報
0/150
提交
取消