Skip to main content

Platform-Specific Code

Build Tags

Platform-specific code uses Go build tags:

//go:build darwin
// +build darwin

package service

Files by Platform

File PatternPlatforms
*_darwin.gomacOS (amd64, arm64)
*_linux.goLinux (amd64)
*_windows.goWindows (amd64)

Platform Differences

FeatureWindowsLinuxmacOS
Service managerSCM (sc.exe)systemdlaunchd (plist)
System infoWMI/native/proc, /etcsysctl, vm_stat
Binary updatetemp file + renameatomic renameatomic rename
Code signingAuthenticodeNoneAd-hoc (rcodesign)
File permissionsACLs via icaclsUnix permissionsUnix permissions

CGO

CGO is disabled for all builds to produce static, cross-platform binaries:

CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build ./...