code: func ReplaceFile(source, destination string) error {
  	src, err := syscall.UTF16PtrFromString(source)
  	if err != nil {
  		return &os.LinkError{"replace", source, destination, err}
  	}
  	dest, err := syscall.UTF16PtrFromString(destination)
  	if err != nil {
  		return &os.LinkError{"replace", source, destination, err}
  	}
  
  	// see http://msdn.microsoft.com/en-us/library/windows/desktop/aa365240(v=vs.85).aspx
  	if err := moveFileEx(src, dest, movefile_replace_existing|movefile_write_through); err != nil {
  		return &os.LinkError{"replace", source, destination, err}
  	}
  	return nil
  }
docs: //sys moveFileEx(lpExistingFileName *uint16, lpNewFileName *uint16, dwFlags uint32) (err error) = MoveFileExW
  // ReplaceFile atomically replaces the destination file or directory with the
  // source.  It is guaranteed to either replace the target file entirely, or not
  // change either file.