OSX 10.10.2 - cmd启动未定义显示

时间:2015-03-18 12:42:17

标签: macos google-chrome go

如何解决? (OSX 10.10.2,go version.4.4 darwin / amd64)

错误:

  

cmd.Start undefined(类型字符串没有字段或方法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");
    } 

1 个答案:

答案 0 :(得分:3)

如果您的cmd变量在封闭函数中隐藏cmd参数(在OP的问题中不可见),则cmd := exec.Command会声明新的cmdshort variable declaration form)在if/else范围之外不可见。{/ p>

OP YumYumYum确认in the comments

  

我有这个:func main() { cmd := "";

这是一个将类型字符串与cmd相关联的简短变量声明 这对exec.Command() *exec.Cmd不起作用,{{3}}会返回*exec.Cmd

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

*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() 中使用“=”代替“:=