下面是一个使用ip2region.LoadContentFromFile进行并发查询的例子:
package main
import (
"fmt"
"github.com/lionsoul2014/ip2region/binding/golang/ip2region"
"sync"
)
func main() {
dbPath := "./ip2region.db"
ipList := []string{"10.0.0.1", "127.0.0.1", "192.168.0.1", "223.5.5.5", "8.8.8.8"}
db, err := ip2region.New(dbPath)
if err != nil {
fmt.Println(err)
return
}
defer db.Close()
// 并发查询IP地址
var wg sync.WaitGroup
for _, ip := range ipList {
wg.Add(1)
go func(ip string) {
defer wg.Done()
info, err := db.BinarySearch(ip)
if err != nil {
fmt.Printf("error: %v\n", err)
return
}
fmt.Printf("%s\t%s\t%s\n", ip, info.Country, info.City)
}(ip)
}
wg.Wait()
}
该程序首先载入了IP库文件,然后针对给定的IP地址列表,通过并发查询获取每个IP地址所对应的地理信息。由于并发处理,可以大大提高查询速度。




