无名参数是 Go 中的一件事吗?
在 Go 中,在函数定义中使用无名参数最初可能会引起问题,特别是当遇到将未命名类型的指针作为参数的代码。这是因为函数参数缺少名称,因此显然无法在函数内引用它。
未命名参数的用途
Go 中未命名参数并不罕见。根据参数声明规范,IdentifierList(标识符名称或名称)是可选的,这意味着它对于函数或方法参数来说不是强制性的。类型是唯一的基本元素。
当参数的标识与函数的行为无关时,就会出现对未命名参数的需求。重要的是参数的顺序和类型,而不是它们的名称。
为什么使用未命名参数?
选择使用未命名参数有多种原因:
示例:
考虑名为 MyWriter 的接口,定义了 Write 方法:
type MyWriter interface { Write(p []byte) error }
要提供丢弃数据的此接口的简单实现,您可以创建一个 DiscardWriter:
type DiscardWriter struct{} func (DiscardWriter) Write([]byte) error { return nil }
在此示例中,接收者和参数都未命名,因为它们没有被使用。
其他注意事项:
未命名参数。如果您选择命名任何参数,则必须命名所有参数。您可以在以下情况下使用空白标识符:
// Responds with "Hello" to all HTTP requests http.HandleFunc("/", func(w http.ResponseWriter, _ *http.Request) { io.WriteString(w, "Hello") })
其他资源:
以上是Go 支持未命名函数参数吗?的详细内容。更多信息请关注PHP中文网其他相关文章!