Tip #59 如果不需要使用某个参数,删除它或是显式地忽略它

原始链接:Golang Tip #59: If a parameter isn't needed, either drop it or ignore it on purpose

在我们深入讨论这个技巧之前,让我们剖析下方例子中出现的问题:

在这个例子中,FetchFile 函数的参数是 URL 和一个文件的校验和 checksum。然而,我们只使用了 URL 来获取文件,没有使用到 checksum

这个例子的问题在于,与局部变量不同,编译器不会告诉你是否忘记在函数中使用了一个参数

因此,尽管校验和 checksum 理应用于检查文件是否完整,我们还是无法确定 checksum 是被意外遗漏了,还是被有意地省略了。

解决方法

我们有两种处理方式:

  • 使用下划线 _ 来故意忽略该参数。
  • 删除未使用的参数。

让我们使用这个技巧来改进函数:

通过将 checksum 参数替换为下划线 _,可以清晰地表示我们是故意省略这个参数的。根据不同的需求,我们可以使用多个下划线 _ 来省略多个参数。

"为什么不直接删除这个参数呢?"

如前文所述,删除该参数是该问题的解决方法之一。

但是,有时我们必须遵循特定的模式,比如遵循接口定义或者特定的函数定义:

当然,如果在参数列表中使用了过多的下划线 _,这可能意味着我们的设计本身就存在着问题。