我是Go Lang的新手。
我很困惑为什么此错误消息仍然出现。
错误消息说明cmd.Args() (type cli.Args)
无法分配给type CmdArgs
为type CmdArgs
的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
类型,但是我认为代码示例中没有指出某些原因。但是,嵌入时间可能比使用别名更容易。