Golang support for native Windows hard links was added in Go 1.4. Specifically, this commit makes the following snippet work:
err := os.Link("original.txt", "link.txt")
Beware that not all Windows file systems support hard links. Currently NTFS and UDF support it, but FAT32, exFAT and the newer ReFS do not.
Full example code:
package main
import (
"log"
"os"
"io/ioutil"
)
func main() {
err := ioutil.WriteFile("original.txt", []byte("hello world"), 0600)
if err != nil {
log.Fatalln(err)
}
err = os.Link("original.txt", "link.txt")
if err != nil {
log.Fatalln(err)
}
}