# Install snapdir for Go
The Go binding wraps the same Rust core as the snapdir CLI through a CGo bridge, so the manifests and snapshot IDs it produces are bit-identical to every other binding. It is a build-from-source binding: you compile the `snapdir-ffi` C ABI from crates.io, generate its header with `cbindgen`, and let CGo link your program against the static library.
## Install
Add the module from GOPROXY:
```sh
go get github.com/snapdir/snapdir/bindings/go@v1.11.0
```
Because this is a CGo package, the module is **not self-contained**: a plain `go get` without the native artefacts in place fails with linker errors. You must supply `libsnapdir_ffi.a` and `snapdir.h`, built from the published `snapdir-ffi` crate (crates.io). This needs a Rust toolchain and `cbindgen`:
```sh
# Build the C ABI static library from the snapdir-ffi source crate
cargo build --release -p snapdir-ffi --locked
# Generate the C header with cbindgen
cbindgen --config cbindgen.toml --crate snapdir-ffi --output snapdir.h .
# Drop the artefacts into the module (both dirs are gitignored, shipped by neither)
# libsnapdir_ffi.a -> /lib/
# snapdir.h -> /include/
# Build with CGo enabled
CGO_ENABLED=1 go build ./...
```
The package sets its own `#cgo` directives (`-I${SRCDIR}/include` and `-L${SRCDIR}/lib -lsnapdir_ffi -lpthread -ldl -lm`), so once the two files are in place `go build` links them automatically.
## Platform support
Every binding is CI-verified against its live public registry before release. The Go binding runs on Linux (glibc and Alpine/musl, x64 and arm64) and macOS. Windows is unsupported — snapdir is Unix-only.
| Binding | Linux glibc | Linux musl (Alpine) | macOS | Windows |
| --- | --- | --- | --- | --- |
| Go | yes (x64 + arm64) | yes (x64 + arm64) | yes | no |
All bindings share this matrix except Java, which is glibc-only today (musl support is planned for 1.11.1).
## Next
- [Go quickstart](/quickstart/go/) — a 60-second push/pull round-trip.
- [Go binding reference](/bindings/go/) — the full API surface and error taxonomy.