以下是一个基于 golang 的 ip2region 使用 xdb 数据,并预先加载整个 ip2region.xdb 到内存的例子:
package main
import (
"fmt"
"github.com/lionsoul2014/ip2region/binding/golang/ip2region"
)
func main() {
db, err := ip2region.New("ip2region.db")
if err != nil {
panic(err)
}
defer db.Close()
ip := "8.8.8.8"
info, err := db.MemorySearch(ip)
if err != nil {
panic(err)
}
fmt.Printf("%s\t%d\t%s\t%s\n", info.Country, info.Province, info.City, info.ISP)
}
首先,我们导入了 ip2region 库,并使用 New 函数创建一个 ip2region 实例。该函数接受一个参数,即 xdb 数据文件的路径(在本例中为 “ip2region.db”),并返回一个 ip2region 实例和一个错误对象。
然后,我们调用 MemorySearch 方法来搜索指定的 IP 地址。由于我们已经将整个数据库加载到内存中,因此查询速度非常快。该方法返回一个 SearchResult 结构体,其中包含有关查询结果的信息。
最后,我们打印出 SearchResult 结构体中的信息,例如国家、省份、城市和 ISP 等信息。
需要注意的是,在使用完 ip2region 实例后,应该调用 Close 方法来释放资源,以便其他程序能够访问该数据库。