Original post

func deg(rad float64) float64 {
        return rad * 180 / math.Pi
}

func main() {

        fmt.Println("Lets do some tests. First move to (5,5):")
        x, y := 5.0, 5.0
        a1, a2 := angles(x, y)
        fmt.Printf("x=%v, y=%v: A1=%v (%v°), A2=%v (%v°)n", x, y, a1, deg(a1), a2, deg(a2))

        fmt.Println("If y is 0 and x = Sqrt(10^2 + 10^2), then alpha should become 45 degrees and beta should become 90 degrees.")
        x, y = math.Sqrt(200), 0
        a1, a2 = angles(x, y)
        fmt.Printf("x=%v, y=%v: A1=%v (%v°), A2=%v (%v°)n", x, y, a1, deg(a1), a2, deg(a2))

        fmt.Println("Now let's try moving to (1, 19).")
        x, y = 1, 19
        a1, a2 = angles(x, y)
        fmt.Printf("x=%v, y=%v: A1=%v (%v°), A2=%v (%v°)n", x, y, a1, deg(a1), a2, deg(a2))

        fmt.Println("n extreme case: (20,0). The arm needs to stretch along the y axis.")
        x, y = 20, 0
        a1, a2 = angles(x, y)
        fmt.Printf("x=%v, y=%v: A1=%v (%v°), A2=%v (%v°)n", x, y, a1, deg(a1), a2, deg(a2))

        fmt.Println("And (0,20).")
        x, y = 0, 20
        a1, a2 = angles(x, y)
        fmt.Printf("x=%v, y=%v: A1=%v (%v°), A2=%v (%v°)n", x, y, a1, deg(a1), a2, deg(a2))

        fmt.Println("Moving to (0,0) technically works if the arm segments have the same length, and if the arm does not block itself. Still the result looks a bit weird!?")
        x, y = 0, 0
        a1, a2 = angles(x, y)
        fmt.Printf("x=%v, y=%v: A1=%v (%v°), A2=%v (%v°)n", x, y, a1, deg(a1), a2, deg(a2))

        fmt.Println("What happens if the target point is outside the reach? Like (20,20).")
        x, y = 20, 20
        a1, a2 = angles(x, y)
        fmt.Printf("x=%v, y=%v: A1=%v (%v°), A2=%v (%v°)n", x, y, a1, deg(a1), a2, deg(a2))
}