Go에서 효율적으로 범위 내 IP 주소 확인
IP 주소가 지정된 범위에 속하는지 확인하는 것은 다양한 네트워크에서 공통 요구 사항입니다. 운영. Go에는 이 작업을 해결하기 위한 여러 접근 방식이 있습니다.
가장 빠른 방법: bytes.Compare
가장 효율적인 방법 중 하나는 bytes.Compare 함수를 사용하는 것입니다. IP 주소의 바이트 표현을 비교합니다.
import ( "bytes" "net" ) // Check if an IP address is within a range func check(trial, start, end net.IP) bool { if start.To4() == nil || end.To4() == nil || trial.To4() == nil { return false } return bytes.Compare(trial, start) >= 0 && bytes.Compare(trial, end) <= 0 }
이 접근 방식에서는 먼저 주어진 IP 주소가 유효한지 확인합니다. IPv4 주소. 그런 다음 bytes.Compare를 사용하여 평가판 IP의 바이트 표현과 범위의 시작 및 끝 지점을 비교합니다. 비교 결과 두 검사 모두에서 음수가 아닌 값이 나오면 IP 주소가 범위 내에 있다는 의미입니다.
사용 예
다음 코드는 bytes.Compare 메소드 사용법:
import ( "fmt" "net" ) var ( ip1 = net.ParseIP("216.14.49.184") ip2 = net.ParseIP("216.14.49.191") ) func main() { check := func(ip string) { trial := net.ParseIP(ip) res := check(trial, ip1, ip2) fmt.Printf("%v is %v within range %v to %v\n", trial, res, ip1, ip2) } check("1.2.3.4") check("216.14.49.185") check("216.14.49.191") }
출력:
1.2.3.4 is false within range 216.14.49.184 to 216.14.49.191 216.14.49.185 is true within range 216.14.49.184 to 216.14.49.191 216.14.49.191 is true within range 216.14.49.184 to 216.14.49.191
위 내용은 Go에서 IP 주소가 범위 내에 있는지 효율적으로 확인하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!