猿问

可变参数函数,无法传递参数

为了调用对话框可执行文件,最多需要3个按钮,我创建了这个函数:


func Dialog(icon string, text string, buttons ...string) int {

    cmd := &exec.Cmd{

        Path: dialogPath,

        Args: []string{

            dialogPath,

            icon,

            text,

            buttons...,

        },

        Stdout: os.Stdout,

        Stdin:  os.Stdin,

    }

    var waitStatus syscall.WaitStatus

    if err := cmd.Run(); err != nil {

        if exitError, ok := err.(*exec.ExitError); ok {

            waitStatus = exitError.Sys().(syscall.WaitStatus)

            return waitStatus.ExitStatus()

        }

    }

    return 0

}

问题是:这甚至无法编译,因为我不知道如何将按钮传递给Cmd。我以为拆包就能解决问题。


Qyouu
浏览 92回答 1
1回答

蝴蝶刀刀

错误是:syntax error: unexpected ..., expecting comma or }这是因为这不是有效的语法:    Args: []string{        dialogPath,        icon,        text,        buttons...,    },只能在函数调用中使用;您可以使用来解决此问题:...append()    Args:   append([]string{dialogPath, icon, text}, buttons...),
随时随地看视频慕课网APP

相关分类

Go
我要回答