gpt4 book ai didi

macos - OSX 10.10.2 - cmd 启动未定义显示

转载 作者:IT王子 更新时间:2023-10-29 02:34:11 27 4
gpt4 key购买 nike

如何解决? (OSX 10.10.2, go版本go1.4.2 darwin/amd64)

错误:

cmd.Start undefined (type string has no field or method Start)

代码:

  myos := runtime.GOOS;
myarch := runtime.GOARCH;
const url = "http://localhsot:9090"
if myarch == "386" {
cmd := exec.Command("open", "-b" , "com.google.Chrome", "--args", "--chrome-frame", "--kiosk", url);
} else {
cmd := exec.Command("open", "-b" , "com.google.Chrome", "--args", "--chrome-frame", "--kiosk", url);
}
err := cmd.Start();
if err != nil {
fmt.Println("failed");
}

最佳答案

如果您的 cmd 变量在封闭函数中隐藏了一个 cmd 参数(在 OP 的问题中不可见),那么 cmd := exec.Command 将声明一个新的 cmd ( short variable declaration form ),它在 if/else 范围之外是不可见的。

OP YumYumYum确认 in the comments :

I had this: func main() { cmd := "";

这是一个简短的变量声明,将类型字符串关联到cmd
这不适用于 exec.Command() *exec.Cmd , 它返回一个 *exec.Cmd

如果声明一个 var cmdopen *exec.Cmd(不同的名称,只是为了安全起见)并实例化它会更好,以确保 cmdopen 来自预期类型 *exec.Cmd

var cmdopen *exec.Cmd
if myarch == "386" {
cmdopen = exec.Command("open", "-b", "com.google.Chrome", "--args", "--chrome-frame", "--kiosk", url)
} else {
cmdopen = exec.Command("open", "-b", "com.google.Chrome", "--args", "--chrome-frame", "--kiosk", url)
}
err := cmdopen.Start()

(注意在 cmdopen = exec.Command 中使用 '=' 而不是 ':=')

关于macos - OSX 10.10.2 - cmd 启动未定义显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29122372/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com