欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

GO語言判斷一個(gè)網(wǎng)段是否屬于另一個(gè)網(wǎng)段的子網(wǎng)

 更新時(shí)間:2022年03月16日 17:21:13   作者:峰啊瘋了  
這篇文章主要介紹了GO語言判斷一個(gè)網(wǎng)段是否屬于另一個(gè)網(wǎng)段的子網(wǎng)的相關(guān)資料,內(nèi)容介紹詳細(xì),具有一定的參考價(jià)值,需要的朋友可任意參考一下

1.校驗(yàn)網(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)掩碼

主要原理就是變成二進(jìn)制以后再進(jìn)行判斷

ipv4跟ipv6都可以校驗(yàn),如果只想校驗(yàn)ipv4可以調(diào)用parseIPv4方法

1.3主函數(shù)運(yùn)行測(cè)試

func main() {
? ? ip := "100.4.11.3/24"
? ? result := IsNetWorkOk(ip)
? ? fmt.Println(result)
}

2.校驗(yàn)ip是否合法

2.1函數(shù)

func IsIpOk(ip string ) bool{
? ? address := net.ParseIP(ip)
? ? if address == nil {
? ? ? ? return false
? ? }
? ? return true
}

2.2分析

點(diǎn)分十進(jìn)制換成2進(jìn)制,判斷是否合法:

2.3主函數(shù)運(yùn)行測(cè)試

func main() {
? ? ip := "100.4.11.34"
? ? result := IsIpOk(ip)
? ? fmt.Println(result)
}

3.判斷兩個(gè)網(wǎng)段,一個(gè)是否是另一個(gè)的子網(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)段是否合法校驗(yàn)
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運(yùn)行測(cè)試

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語言判斷一個(gè)網(wǎng)段是否屬于另一個(gè)網(wǎng)段的子網(wǎng)的文章就介紹到這了,更多相關(guān)golang網(wǎng)段內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 如何利用Golang解析讀取Mysql備份文件

    如何利用Golang解析讀取Mysql備份文件

    這篇文章主要給大家介紹了關(guān)于如何利用Golang解析讀取Mysql備份文件的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Golang具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • Golang實(shí)現(xiàn)反向代理的示例代碼

    Golang實(shí)現(xiàn)反向代理的示例代碼

    這篇文章主要為大家學(xué)習(xí)介紹了如何利用Golang實(shí)現(xiàn)反向代理,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,感興趣的小伙伴可以跟隨小編一起了解一下
    2023-07-07
  • go RWMutex的實(shí)現(xiàn)示例

    go RWMutex的實(shí)現(xiàn)示例

    本文主要來介紹讀寫鎖的一種Go語言的實(shí)現(xiàn)方式RWMutex,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • GO語言求100以內(nèi)的素?cái)?shù)

    GO語言求100以內(nèi)的素?cái)?shù)

    這篇文章主要介紹了GO語言求100以內(nèi)的素?cái)?shù),主要通過篩選法來實(shí)現(xiàn),涉及GO語言基本的循環(huán)與函數(shù)調(diào)用方法,需要的朋友可以參考下
    2014-12-12
  • Go?文件讀取和寫入操作全面講解

    Go?文件讀取和寫入操作全面講解

    這篇文章主要為大家介紹了Go文件的讀取和寫入操作示例的全面詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-11-11
  • Golang基于JWT與Casbin身份驗(yàn)證授權(quán)實(shí)例詳解

    Golang基于JWT與Casbin身份驗(yàn)證授權(quán)實(shí)例詳解

    這篇文章主要為大家介紹了Golang基于JWT與Casbin實(shí)現(xiàn)身份驗(yàn)證授權(quán)實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • Go語言Telnet回音服務(wù)器的實(shí)現(xiàn)

    Go語言Telnet回音服務(wù)器的實(shí)現(xiàn)

    這篇文章主要介紹了Go語言Telnet回音服務(wù)器的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • Go語言學(xué)習(xí)教程之goroutine和通道的示例詳解

    Go語言學(xué)習(xí)教程之goroutine和通道的示例詳解

    這篇文章主要通過A?Tour?of?Go中的例子進(jìn)行學(xué)習(xí),以此了解Go語言中的goroutine和通道,文中的示例代碼講解詳細(xì),感興趣的可以了解一下
    2022-09-09
  • golang實(shí)現(xiàn)微信支付v3版本的方法

    golang實(shí)現(xiàn)微信支付v3版本的方法

    這篇文章主要介紹了golang實(shí)現(xiàn)微信支付v3版本的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03
  • 更高效的GoLevelDB:shardingdb實(shí)現(xiàn)分片和并發(fā)讀寫操作

    更高效的GoLevelDB:shardingdb實(shí)現(xiàn)分片和并發(fā)讀寫操作

    這篇文章主要介紹了更高效的GoLevelDB:shardingdb實(shí)現(xiàn)分片和并發(fā)讀寫操作的相關(guān)資料,需要的朋友可以參考下
    2023-09-09

最新評(píng)論