🧪 基础用法
对应
examples/basic_usage/main.go,最简查询示例。
🎨 一图抵千言
本示例的调用结构:main 创建默认客户端,通过带超时的 context 发起查询,拿到 IPInfo 后打印并解析经纬度。
完整代码
go
package main
import (
"context"
"fmt"
"log"
"time"
"github.com/cyberspacesec/ipapi.co-skills/pkg/ipapi"
)
func main() {
// 创建默认客户端
client := ipapi.NewClient()
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()
// 获取当前 IP 的完整信息
info, err := client.GetClientIPInfo(ctx, "json")
if err != nil {
log.Fatalf("获取IP信息失败: %v", err)
}
fmt.Printf("IP基本信息:\n%s\n国家: %s\n城市: %s\n时区: %s\n经纬度: %s\n",
info.IP, info.CountryName, info.City, info.Timezone, info.LatLong)
// 解析经纬度坐标
lat, lon, err := info.ParseLatLong()
if err == nil {
fmt.Printf("解析后的坐标: 纬度=%.4f, 经度=%.4f\n", lat, lon)
}
}要点解析
1. 创建默认客户端
go
client := ipapi.NewClient()无需任何配置,使用默认 10s 超时、https://ipapi.co/ 基地址。详见 NewClient。
2. 设置超时上下文
go
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()5 秒超时,defer cancel() 防止泄漏。详见 Context 指南。
3. 查询客户端 IP
go
info, err := client.GetClientIPInfo(ctx, "json")用 GetClientIPInfo 拿「调用方出口 IP」的完整信息。
4. 读取字段
go
info.IP // IP 地址
info.CountryName // 国家名
info.City // 城市
info.Timezone // 时区
info.LatLong // 经纬度字符串5. 解析经纬度
go
lat, lon, err := info.ParseLatLong()用 ParseLatLong 把 "lat,lon" 字符串解析为数值。
🎨 解析经纬度流程
运行
bash
cd examples/basic_usage
go run main.go预期输出:
IP基本信息:
203.0.113.42
国家: China
城市: Beijing
时区: Asia/Shanghai
经纬度: 39.9042,116.4074
解析后的坐标: 纬度=39.9042, 经度=116.4074