https://github.com/oschwald/geoip2-golang — читает МаксМайндовские базы (
GeoLite2,
GeoIP2)
(ахтунг, в примере опущена обработка ошибок)
db, err := geoip2.Open("GeoIP2-City.mmdb")
ip := net.ParseIP("81.2.69.142")
record, err := db.City(ip)
fmt.Printf("Russian country name: %v\n", record.Country.Names["ru"])
fmt.Printf("Time zone: %v\n", record.Location.TimeZone)
// Output:
// Russian country name: Великобритания
// Time zone: Europe/London
www.devdungeon.com/content/ip-geolocation-go — пост про использование сторонних API для этой цели.