2017-09-05 8 views
1

golangに 'npm netmask'と類似するものはありますか?つまり、10.0.0.0/ を10.0.0.0/ 255.0.0.0に変換する必要があります。つまり、基本的にCIDR形式のネットマスクがドット10進数に変換されます。golang IPアドレス/サブネットマスク(ドット10進数)へのCIDR接頭辞表記

var Netmask = require('netmask').Netmask 
var block = new Netmask('10.0.0.0/8'); 
block.mask; // 255.0.0.0 

私は行くの標準ライブラリは、その表現を作成する機能を持っていない/golang.org/src/net/ip.go

答えて

3

でそれを見つけることができません。つまり、自分で行うことは困難ではない、言われている:

https://play.golang.org/p/XT_UXoy6ra

func main() { 
    _, ipv4Net, err := net.ParseCIDR("10.0.0.0/8") 
    if err != nil { 
     log.Fatal(err) 
    } 
    fmt.Println(ipv4MaskString(ipv4Net.Mask)) 
} 

func ipv4MaskString(m []byte) string { 
    if len(m) != 4 { 
     panic("ipv4Mask: len must be 4 bytes") 
    } 

    return fmt.Sprintf("%d.%d.%d.%d", m[0], m[1], m[2], m[3]) 
} 

は、このフォーマットは、IPv4のみのマスクの作品を覚えておいてください。 ipv6マスクを渡す場合、これはパニックに陥ります。