我真的很喜歡Go,但讓我爲if-err地獄而瘋狂,以及在Go代碼中使用其他語言同步數據類型時的情緒。對於C/C++,我可以輕鬆地使用宏來處理這些東西,而Go開發人員說Go的慣用解決方案是代碼生成,但是我沒有找到任何現成的解決方案。任何慣用的生成/預處理解決方案庫?
所以基本上,我需要的是像
- 閱讀源,每一個類型的使用檢查,如果它是在特殊的配置文件中列出。如果是,則使用config中的一個進行更改。
- 閱讀源代碼,查看每個函數是否在配置文件中列出。如果是,則使用模板配置中的代碼片段對其進行更改,如果缺少,則添加必要的導入。
- 可能會根據返回值添加一些多態以防止類型轉換。
- 也許,加上
(err error)
邏輯。不確定這是個好主意。
像這樣
code.go
func getConn(id platform.UUID) (res1 string, res2 platform.res) {
res1 = driver_native_res(id)
res2 = driver_native_res(id)
return
}
代碼gen.go
import (
"linux"
)
func getConn(id uint64) (res1 string, res2 int32, err error) {
res1, err = linux.GetResAsString(id)
if err != nil {
return
}
res2, err = linux.GetRes(id)
if err != nil {
return
}
return
}
我知道去AST,但好像它不是很快速實現這樣的功能。我希望有一些更簡單的解決方案。
[問題要求我們建議還是找一本書,工具,軟件庫,教程或其他異地資源是題外話堆棧溢出,因爲他們往往以吸引自以爲是的答案和垃圾郵件。(https://開頭計算器.COM /幫助/切合主題) – Adrian