To determine the currency code for an IP address using IP2Location.io in Go, you can use the IP2Location.io API to retrieve geolocation and related data.
go mod init example
package main
import (
"encoding/json"
"fmt"
"io"
"net/http"
"strings"
)
type CurrencyObj struct {
Code string `json:"code"`
}
type ResultObj struct {
Country struct {
Currency CurrencyObj `json:"currency"`
} `json:"country"`
}
type ErrorObj struct {
Error struct {
ErrorMessage string `json:"error_message"`
} `json:"error"`
}
func main() {
var res ResultObj
var ex ErrorObj
var key = "YOUR_API_KEY"
var ip = "8.8.8.8"
myUrl := "https://api.ip2location.io?format=json&ip=" + ip + "&key=" + key
resp, err := http.Get(myUrl)
if err != nil {
panic(err)
}
defer resp.Body.Close()
if resp.StatusCode == http.StatusOK {
bodyBytes, err := io.ReadAll(resp.Body)
if err != nil {
panic(err)
}
bodyStr := string(bodyBytes[:])
if strings.Contains(bodyStr, "currency") {
err = json.Unmarshal(bodyBytes, &res)
if err != nil {
panic(err)
}
fmt.Print("The currency code for IP " + ip + " is " + res.Country.Currency.Code + ".")
} else {
panic("ERROR: The currency code field requires a paid subscription to the Plus plan or higher.")
}
} else if resp.StatusCode == http.StatusBadRequest || resp.StatusCode == http.StatusUnauthorized {
bodyBytes, err := io.ReadAll(resp.Body)
if err != nil {
panic(err)
}
bodyStr := string(bodyBytes[:])
if strings.Contains(bodyStr, "error_message") {
err = json.Unmarshal(bodyBytes, &ex)
if err != nil {
panic(err)
}
panic("ERROR: " + ex.Error.ErrorMessage)
}
} else {
panic("ERROR: Unable to call the API.")
}
}
go run example.go
This script will output the currency code of specified IP address. Make sure to replace 8.8.8.8 with the IP address you want and replace YOUR_API_KEY to your own API key.
Empower your applications with accurate IP geolocation information now.
Try It for Free