mirror of
https://github.com/teivah/100-go-mistakes.git
synced 2026-06-22 01:17:11 +08:00
80 lines
1.8 KiB
Go
80 lines
1.8 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"log"
|
|
)
|
|
|
|
type Route struct{}
|
|
|
|
func GetRoute1(srcLat, srcLng, dstLat, dstLng float32) (Route, error) {
|
|
err := validateCoordinates1(srcLat, srcLng)
|
|
if err != nil {
|
|
log.Println("failed to validate source coordinates")
|
|
return Route{}, err
|
|
}
|
|
|
|
err = validateCoordinates1(dstLat, dstLng)
|
|
if err != nil {
|
|
log.Println("failed to validate target coordinates")
|
|
return Route{}, err
|
|
}
|
|
|
|
return getRoute(srcLat, srcLng, dstLat, dstLng)
|
|
}
|
|
|
|
func validateCoordinates1(lat, lng float32) error {
|
|
if lat > 90.0 || lat < -90.0 {
|
|
log.Printf("invalid latitude: %f", lat)
|
|
return fmt.Errorf("invalid latitude: %f", lat)
|
|
}
|
|
if lng > 180.0 || lng < -180.0 {
|
|
log.Printf("invalid longitude: %f", lng)
|
|
return fmt.Errorf("invalid longitude: %f", lng)
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func GetRoute2(srcLat, srcLng, dstLat, dstLng float32) (Route, error) {
|
|
err := validateCoordinates2(srcLat, srcLng)
|
|
if err != nil {
|
|
return Route{}, err
|
|
}
|
|
|
|
err = validateCoordinates2(dstLat, dstLng)
|
|
if err != nil {
|
|
return Route{}, err
|
|
}
|
|
|
|
return getRoute(srcLat, srcLng, dstLat, dstLng)
|
|
}
|
|
|
|
func validateCoordinates2(lat, lng float32) error {
|
|
if lat > 90.0 || lat < -90.0 {
|
|
return fmt.Errorf("invalid latitude: %f", lat)
|
|
}
|
|
if lng > 180.0 || lng < -180.0 {
|
|
return fmt.Errorf("invalid longitude: %f", lng)
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func GetRoute3(srcLat, srcLng, dstLat, dstLng float32) (Route, error) {
|
|
err := validateCoordinates2(srcLat, srcLng)
|
|
if err != nil {
|
|
return Route{},
|
|
fmt.Errorf("failed to validate source coordinates: %w", err)
|
|
}
|
|
|
|
err = validateCoordinates2(dstLat, dstLng)
|
|
if err != nil {
|
|
return Route{},
|
|
fmt.Errorf("failed to validate target coordinates: %w", err)
|
|
}
|
|
|
|
return getRoute(srcLat, srcLng, dstLat, dstLng)
|
|
}
|
|
|
|
func getRoute(lat, lng, lat2, lng2 float32) (Route, error) {
|
|
return Route{}, nil
|
|
}
|