golang中混合命名和未命名参数

ZEE*_*USI 10 go

我的代码遇到问题,它给了我一个错误:

未命名和混合参数

func(uc fyne.URIWriteCloser, error) {
   ...
}
Run Code Online (Sandbox Code Playgroud)

Tre*_*son 19

看起来您声明了一个具有命名参数和未命名参数的函数,但您不能这样做。

有两种方法可以处理函数中的参数。您可以为所有参数命名,也可以不为任何参数提供名称。

这是一个有效的函数签名,其中两个参数均已命名。

func(uc fyne.URIWriteCloser, err error) {
    // do something
}

Run Code Online (Sandbox Code Playgroud)

这也是,没有命名参数。

func(fyne.URIWriteCloser, error) {
    // do something
}

Run Code Online (Sandbox Code Playgroud)

如果您要命名第一个参数,但不命名第二个参数

func(uc fyne.URIWriteCloser, error) {
   // do something
}
Run Code Online (Sandbox Code Playgroud)

然后你会看到这个错误

Function has both named and unnamed parameters 
Run Code Online (Sandbox Code Playgroud)

因此,问题在于第二个参数只是声明参数类型而不是名称,而第一个参数则定义类型并命名参数。


Von*_*onC 3

正如函数类型规范中所指定的:

在参数或结果列表中,名称 (IdentifierList) 必须全部存在或全部不存在。

  • 如果存在,则每个名称代表指定类型的一项(参数或结果),并且签名中的所有非空白名称必须是唯一的。
  • 如果不存在,则每种类型代表该类型的一项。

参数和结果列表总是带括号的,除非只有一个未命名的结果,它可以写为不带括号的类型。

所以要么删除uc,要么添加err error