code: func CommandLineToArgv(commandLine string) ([]string, error) {
  	var argc int32
  
  	argsPtr, err := windows.UTF16PtrFromString(commandLine)
  	if err != nil {
  		return nil, err
  	}
  
  	argv, err := windows.CommandLineToArgv(argsPtr, &argc)
  	if err != nil {
  		return nil, err
  	}
  	defer windows.LocalFree(windows.Handle(uintptr(unsafe.Pointer(argv))))
  
  	newArgs := make([]string, argc)
  	for i, v := range (*argv)[:argc] {
  		newArgs[i] = string(windows.UTF16ToString((*v)[:]))
  	}
  
  	return newArgs, nil
  }
docs: // CommandLineToArgv wraps the Windows syscall to turn a commandline into an argument array.