构建错误:未知字段“ HideWindow”

I'm making multi-platform Gui applications with golang and Qt. The application executes an external command.

In Windows, a DOS window is displayed when executing the external command. I gave the HideWindow attribute so as not to display this.

  command := exec.Command("hoge", "fuga")
  command.SysProcAttr = &syscall.SysProcAttr{HideWindow: true}

this code works well in Windows, but the following error occurred in the build for MacOS.

unknown field 'HideWindow' in struct literal of type syscall.SysProcAttr

I modified the code as below, but I can not avoid the error. Are there any ideas?

 if runtime.GOOS == "windows" {
  command.SysProcAttr = &syscall.SysProcAttr{HideWindow: true}
 }

You cannot fix a compile-time error with a run-time check. You'll need to use build constraints to create separate implementations compatible with each platform. To stay DRY, you'll likely want to create a function that only handles the platform-specific behavior(s), so that the cross-platform code can then call into the platform-specific function (which may be a no-op on platforms that need no platform-specific behavior). So you might have a file for Windows, one for MacOS, and one for Linux (or whatever set of platforms you're supporting), each with a function like:

// +build darwin

package whatever

func prepareBackgroundCommand(cmd *exec.Cmd) {
    cmd.SysProcAttr = &syscall.SysProcAttr{HideWindow: true}
}

And another like:

// +build !darwin

package whatever

func prepareBackgroundCommand(cmd *exec.Cmd) {
}

So that in your main (non-platform-specific) code, you can call prepareBackgroundCommand(command) and it will handle it correctly based on the platform it's being compiled for.