How to convert a degree to a compass direction in Go

1 Answer

0 votes
package main

import (
    "fmt"
    "math"
)

/*
0°   → North
45°  → North-East
90°  → East
135° → South-East
180° → South
225° → South-West
270° → West
315° → North-West
*/

// degreesToDirection converts degrees into a compass direction.
func degreesToDirection(degrees float64) string {
    // Normalize degrees to [0, 360)
    degrees = math.Mod(degrees+360, 360)

    // Define compass directions
    directions := []string{
        "North", "North-East", "East", "South-East",
        "South", "South-West", "West", "North-West",
    }

    // Each direction covers 45 degrees
    index := int((degrees + 22.5) / 45) % 8
    // Alternative: index := int((degrees/45) + 0.5) % 8

    return directions[index]
}

func main() {
    degrees := 120.0
    
    fmt.Printf("For %.0f degrees, Compass direction: %s\n", degrees, degreesToDirection(degrees))
}



/*
run:

For 120 degrees, Compass direction: South-East

*/

 



answered Nov 24, 2025 by avibootz
edited Nov 24, 2025 by avibootz
...