Delve into a community where programmers unite to discover code snippets, exchange skills, and enhance their programming proficiency. With abundant resources and a supportive community, you'll find everything essential for your growth and success.
package main
import("fmt""runtime")funcmain(){// The runtime.GOOS constant can be used to detect the OS at runtime,// since this constant is only set at runtime. os := runtime.GOOS
switch os {case"windows": fmt.Println("Windows")case"darwin": fmt.Println("MacOS")case"linux": fmt.Println("Linux")default: fmt.Printf("%s.\n", os)}// The runtime.GOARCH constant can be used to determine the target architecture of a running program. fmt.Println(runtime.GOARCH)}// Output:// Linux// amd64
GOOS constant to determine the operating system your Go program is running on. Here's an example of how to check the operating system in Go.
package main
import("fmt""os""os/signal""syscall")funcmain(){ sigs :=make(chan os.Signal,1)// create channel for signal, it should be buffered signal.Notify(sigs, syscall.SIGINT)// register the channel to receive notifications of the specified signals done :=make(chanbool,1)gofunc(){ sig :=<-sigs // wait for OS signal, once received, notify main go routine fmt.Printf("\nos signal: %v\n", sig) done <-true}() fmt.Println("awaiting signal")<-done // wait for the expected signal and then exit fmt.Println("exiting")}// $ go run main.go // awaiting os signal// ^C// os signal: interrupt// exiting program
Here is an example go program for processing Unix signals using channels. Signal processing can be useful, for example, for correct terminating of program when receiving SIGTINT.