, пожалуйста, помогите мне решить следующую задачу как можно быстрее
У меня есть большой список IP / подсетей, таких как ...
35.132.199.128/27
8.44.144.248/32
87.117.185.193
45.23.45.45
и т. Д., И мне нужно будет найти некоторыеip в этом списке максимально быстро запускается в go.
, когда я пытаюсь использовать кусочек строк и диапазон, это было очень медленно в большом списке.
Могу ли я использовать карту, например строку map [string], и ее внешний вид можно использовать, но только для проверки ip, а не для проверки подсети.
Кто-нибудь может мне помочь с решением этой задачи?Благодарю.
мой код
func (app *application) validateIP(ip string) bool {
for _, item := range app.IPList {
itemIsIP := net.ParseIP(item)
if itemIsIP != nil {
if ip == itemIsIP.String() {
return true
}
continue
}
_, itemNet, err := net.ParseCIDR(item)
if err != nil {
log.Printf("[ERROR] %+v", err)
}
checkedIP := net.ParseIP(ip)
if itemNet.Contains(checkedIP) {
return true
}
}
return false
}