Я нашел решение, но оно мне не очень помогает.(См. Комментарий / предупреждение от @eryksun)
import (
"golang.org/x/sys/windows"
)
func GetShortPathName(name string) (path string, err error) {
lp, err := windows.UTF16PtrFromString(name)
if err != nil {
return "", err
}
n := uint32(100)
for {
buf := make([]uint16, n)
n, err = windows.GetShortPathName(lp, &buf[0], uint32(len(buf)))
if err != nil {
return "", err
}
if n <= uint32(len(buf)) {
return windows.UTF16ToString(buf[:n]), nil
}
}
}