2 回答
TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超7個(gè)贊
您可以使用與參數(shù)類型相同的匿名結(jié)構(gòu):bar()
func bar(arg struct {
Prop int
}) {
fmt.Printf("Received: %+v\n", arg)
}
則以下為有效代碼:
res := foo()
bar(res)
和輸出(在Go Playground上嘗試):
Received: {Prop:1}
這是可能的,因?yàn)槿绻袇?shù)都可分配給 的參數(shù)類型,并且 的匿名結(jié)構(gòu)返回類型可分配給 的匿名結(jié)構(gòu)參數(shù),則調(diào)用是有效的。bar(res)bar()foo()bar()
如果你需要它是動態(tài)的(例如,結(jié)果類型在重新生成時(shí)可能會改變),你可以使用go/parser包來解析生成的源,并使用相同的參數(shù)類型生成,習(xí)慣上在運(yùn)行時(shí)執(zhí)行。您應(yīng)該使生成/更改的生成過程的這一部分,因此并且將保持同步。foo()bar()go generatefoofoobar
TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超9個(gè)贊
我可以在不手動定義 ReturnTypeOfFoo 類型的情況下執(zhí)行此操作嗎?
不,因?yàn)?..
我可以在foo()上做一些反思嗎?
不。不能在編譯時(shí)使用反射。
- 2 回答
- 0 關(guān)注
- 135 瀏覽
添加回答
舉報(bào)
