GO語言判斷一個網(wǎng)段是否屬于另一個網(wǎng)段的子網(wǎng)
1.校驗網(wǎng)段是否合法
1.1函數(shù)
import (
? ? "fmt"
? ? "net"
)
func IsNetWorkOk(network string ) bool{
? ? _, _, err := net.ParseCIDR(network)
? ? if err != nil {
? ? ? ? return false
? ? }
? ? return true
}
1.2分析
第一步就是先split變成ip跟子網(wǎng)掩碼
主要原理就是變成二進制以后再進行判斷
ipv4跟ipv6都可以校驗,如果只想校驗ipv4可以調(diào)用parseIPv4方法
1.3主函數(shù)運行測試
func main() {
? ? ip := "100.4.11.3/24"
? ? result := IsNetWorkOk(ip)
? ? fmt.Println(result)
}2.校驗ip是否合法
2.1函數(shù)
func IsIpOk(ip string ) bool{
? ? address := net.ParseIP(ip)
? ? if address == nil {
? ? ? ? return false
? ? }
? ? return true
}2.2分析

點分十進制換成2進制,判斷是否合法:

2.3主函數(shù)運行測試
func main() {
? ? ip := "100.4.11.34"
? ? result := IsIpOk(ip)
? ? fmt.Println(result)
}3.判斷兩個網(wǎng)段,一個是否是另一個的子網(wǎng)
3.1函數(shù)
func ContainsCIDR(a, b *net.IPNet) bool {
? ? ones1, _ := a.Mask.Size()
? ? ones2, _ := b.Mask.Size()
? ? return ones1 <= ones2 && a.Contains(b.IP)
}
//最好提前做好網(wǎng)段是否合法校驗
func ContainsCIDRString(a,b string)(bool,error){
? ? _, net1, err := net.ParseCIDR(a)
? ? if err != nil {
? ? ? ? return false,err
? ? }
? ? _, net2, err := net.ParseCIDR(b)
? ? if err != nil {
? ? ? ? return false,err
? ? }
? ? result := ContainsCIDR(net1,net2)
? ? return result,err
}3.2分析

調(diào)用了ip包含的方法
3.3運行測試
func main() {
? ? net1 := "100.64.0.0/16"
? ? net2 := "100.64.0.0/20"
? ? _, a, err := net.ParseCIDR(net1)
? ? _, b, err := net.ParseCIDR(net2)
? ? if err != nil {
? ? ? ? return
? ? }
? ? result := ContainsCIDR(a,b)
? ? fmt.Println(result)
}到此這篇關(guān)于GO語言判斷一個網(wǎng)段是否屬于另一個網(wǎng)段的子網(wǎng)的文章就介紹到這了,更多相關(guān)golang網(wǎng)段內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
解決Goland 提示 Unresolved reference 錯誤的問題
這篇文章主要介紹了解決Goland 提示 Unresolved reference 錯誤的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-12-12
Go基本數(shù)據(jù)類型與string類型互轉(zhuǎn)
本文主要介紹了Go基本數(shù)據(jù)類型與string類型互轉(zhuǎn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-03-03
詳解Golang如何優(yōu)雅判斷interface是否為nil
這篇文章主要為大家詳細介紹了Golang如何優(yōu)雅判斷interface是否為nil的相關(guān)知識,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起了解下2024-01-01
go語言題解LeetCode453最小操作次數(shù)使數(shù)組元素相等
這篇文章主要為大家介紹了go語言題解LeetCode453最小操作次數(shù)使數(shù)組元素相等示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-12-12
golang 的string與[]byte轉(zhuǎn)換方式
這篇文章主要介紹了golang 的string與[]byte轉(zhuǎn)換方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-04-04

