我知道最新版本的Go
中没有任何可选的参数。但是在很多情况下,它们确实很有帮助。
考虑过度简化的示例:
func getFullName(firstName string, lastName string, maybeMiddleName func() (bool, string)) string {
if ok, middleName:= maybeMiddleName(); ok {
return firstName + " " + middleName + " " + lastName
}
return firstName + " " + lastName
}
这看起来已经足够好了,思考需要在客户端进行大量的冗长操作:每当middleName
不存在或存在时,都必须在内部传递func() (bool, string) { return false, nil }
。如果(false, nil)
支持元组作为输入参数,可能只是Go
,但事实并非如此:您可以返回(pairs, or, even, more)
,但不能将它们作为预期输入。
有人可能会争辩说nil
可能被视为缺席的迹象。我不同意:不允许nil
淹没任何可靠的代码库。
我看到的另一种选择更加麻烦:诸如func(maybeMiddleName struct{ ok bool; middleName string; }) ...
之类的匿名结构,它迫使该方法的调用者每次都编写更多的冗余代码。
但是我是Go
的新手,仍然觉得有更好的方法。有吗?
答案 0 :(得分:1)
但是我对Go还是陌生的,但仍然觉得可能会有更好的方法。是 在那里?
我很乐意拒绝。没有其他方法。