让我们说我们想要实现以下计算:
outval / err = f3(f3(f1(inval))
其中每一个的f1,f2,f3可与当时的错误失败,我们停止计算,并设置err为Error被失败的函数返回.(当然,嵌套可以任意长)
在像C++/JAVA/C#这样的语言中,可以通过使用f1,f2并f3抛出异常并将计算封装在try-catch块中来轻松完成,而在像Haskell这样的语言中,我们可以使用monads代替.
现在我正在尝试在GO中实现它,我能想到的唯一方法是显而易见的 - 否则是一个相当冗长的梯形图.如果我们无法嵌套调用,我没有问题,但在我看来,在代码中的每一行看起来很丑并且它打破了流程后添加错误检查.我想知道是否有更好的方法.
编辑:根据peterSO的评论进行编辑
下面是具体的示例和简单的实现
package main
import "fmt"
func f1(in int) (out int, err error) {
return in + 1, err
}
func f2(in int) (out int, err error) {
return in + 2, err
}
func f3(in int) (out int, err error) {
return in + 3, err
}
func calc(in int) (out int, err error) …Run Code Online (Sandbox Code Playgroud) 如何使用 Roslyn 语法工厂为整数文字(例如 2)创建表达式?
当我在调试器下查看它时,它看起来有 type NumericLiteralExpression,但我找不到如何创建它?
最近,我发现是SyntaxFactory.LiteralExpression(SyntaxKind.NumericLiteralExpression, SyntaxFactory.Token(..)),但我不知道如何创建表示值 2 的标记。
任何人都可以告诉我如何使用GO模板在https://developers.google.com/appengine/docs/java/gettingstarted/usingjsps上编写像guestbook.jsp这样的简单页面?
在我看来,很容易编写一个有效的,但我想知道它是否可以像JSP页面一样简洁地完成.
有两个问题,我不知道如何解决