使用 Go 中的介面來定義 RPC 風格的介面是一種常見的做法。考慮以下範例:
type MyService interface{ Login(username, password string) (sessionId int, err error) HelloWorld(sessionId int) (hi string, err error) }
要使用反射實現此接口,您需要將方法調用轉換為 RPC 調用,編組輸入參數,並將結果解組回方法的輸出。
但是,沒有直接的方法可以使用反射來創建一個透過呼叫反射函數來實現介面的值。
不安全的包可能會允許這樣的解決方案,但它會非常複雜且容易出錯。不建議採用這種方法。
與其透過反射創建函數,不如考慮探索更符合 Go 設計原則的替代解決方案。解釋一下你的具體問題或需要提供更量身定制的建議。
更新:
隨著 Go 1.5 中reflect.FuncOf 和reflect.MakeFunc 的引入,它是現在可以根據需要創建帶有反射的函數。
以上是Go反射可以創造實現介面的函數嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!