如何解决? (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");
}
答案 0 :(得分:3)
如果您的cmd
变量在封闭函数中隐藏cmd
参数(在OP的问题中不可见),则cmd := exec.Command
会声明新的cmd
( short 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()
中使用“=
”代替“:=
”