是否不鼓励在Go中使用单线for循环或if语句?

时间:2018-09-18 07:42:58

标签: for-loop if-statement go

例如,简单检查一个空字符串:

if s == "" { return 0 }

或者,一个for循环用-1预填充数组(我认为没有更简单的方法可以做到这一点):

for i := range m { m[i] = -1 }

即使这些功能非常简单,还是通常不鼓励这样做?我并不是要学究,但通常会对此感到好奇。

1 个答案:

答案 0 :(得分:10)

通常,Go的文化是按照命令go fmt格式化代码的方式格式化代码。 (链接的文章中存在接受样式的原因。)

在某种程度上,go fmt将结构化语句主体放在单独的行上意味着,是的,这种做法在社区中是“不明智的”,但这只是因为希望对尽可能多的Go源代码具有共同的外观尽可能。

为什么单行代码不属于go fmt的原因并不像选择go fmt作为规范样式的事实那样重要。如果您想就单线的优缺点进行辩论,则可以查看几乎任何一种花括号语言进行的辩论,因为它们并不是Go语言所独有的。当然,Go强制使用大括号确实使问题与例如C或Java稍有不同,在C或Java中,无括号的主体意味着“在主体中添加新语句”更加困难,但是基本上,许多与可读性相同的论点确实适用。