How to fix it? (OSX 10.10.2, go version 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");
}
If your cmd
variable is shadowing a cmd
parameter in an enclosing function (not visible in the OP's question), then the cmd := exec.Command
would declare a new cmd
(short variable declaration form) which wouldn't be visible outside of the if/else
scope.
The OP YumYumYum confirms in the comments:
I had this:
func main() { cmd := "";
This is a short variable declaration associating the type string to cmd
.
That wouldn't work well with exec.Command() *exec.Cmd
, which returns a *exec.Cmd
.
If would be better to declare a var cmdopen *exec.Cmd
(different name, just to be on the safe side) and instantiates it, in order to be sure that the cmdopen
is from the expected type *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()
(note the use of '=
' instead of ':=
' in cmdopen = exec.Command
)