-2
有沒有一種方法可以在全局範圍內隱藏一個函數在golang包中?在一些去文件,我不希望用戶能夠調用BFunc ......也就是說,我希望把它包起來......隱藏全局函數
// Lets say this package provides BFunc()
// And I have a naughty user who wants to import it
. "github.com/a/bfunc"
因此,在另一個在全球範圍內去文件,我可以做:
func BFunc() { fmt.Print("haha I tricked you") }
當我嘗試,我得到一個錯誤,有相同功能的先前聲明,特指在.
進口。
會有語法破解我可以做的,以防止用戶從全局導入bfunc.BFunc()方法到他們的代碼?
UPDATE
這可以使用一個更簡單的代碼段進行說明。
package main
import . "fmt"
func Print(t string) {
Print("ASDF")
}
func main() {
Print("ASDF")
}
哪個不行,因爲Print被重新聲明。如果有一種方法可以解決這個問題,那麼Print可以被重新聲明,那麼這將有效地回答我原來的問題。
根據需要的安全程度(例如,您是否以不需要轉義沙箱或其他方式執行任意代碼?),您可能需要考慮將某些包列入黑名單。 – joshlf
是的:不要輸出BFunc。 – Volker