我是 Go Lang 的新手。
我很困惑为什么这个错误信息仍然出现。
cannot use cmd.Args() (type cli.Args) as type CmdArgs in assignment
错误消息解释说 cmd.Args() (type cli.Args)
cannot assignment to type CmdArgs
which is type CmdArgs
is cli.Args
.
我已阅读 Cannot use as type in assignment in go ,但这并不能使我明白我的错误在哪里。我认为这对我来说是另一回事。
有什么解决办法吗?
这是我的代码。
package main
import (
"fmt"
"os"
"github.com/urfave/cli"
)
// CmdArgs is command arguments
type CmdArgs cli.Args
func main() {
program := cli.NewApp()
program.Action = func(cmd *cli.Context) error {
var args CmdArgs
args = cmd.Args()
▼▼▼▼▼▼▼▼▼
cannot use cmd.Args() (type cli.Args) as type CmdArgs in assignment
return nil
}
program.Run(os.Args)
}
感谢您的关注。
最佳答案
错误的意思与它所说的完全一样:您试图将函数的返回值分配给与返回值类型不同的变量,这是无效的。当你定义一个新类型时,它就是一个新类型,不能直接赋值。您可以在它们之间转换,但是Go 中没有隐式转换 - 转换必须显式完成:
var args CmdArgs
normalArgs := cmd.Args()
args = CmdArgs(normalArgs)
虽然我想知道您为什么要创建一个新类型 CmdArgs
开始,但我假设有一些代码示例中没有指出的原因。但是,嵌入而不是别名可能更容易。
关于Go - 不能在赋值中用作类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44887356/