也就是说,如何检查如果第一个网络是第二个如果第二网络是第一个子网的子网。

Go是否提供了用于此特定任务的任何实用功能?

请参阅下面的测试代码。

package main 

import (
    "fmt" 
    "net" 
) 

func main() { 
    _, net1, _ := net.ParseCIDR("1.1.1.1/24") 
    _, net2, _ := net.ParseCIDR("1.1.0.2/16") 
    _, net3, _ := net.ParseCIDR("1.1.1.3/25") 
    _, net4, _ := net.ParseCIDR("1.2.0.4/16") 

    test(net1, net2, true) 
    test(net2, net1, true) 
    test(net1, net3, true) 
    test(net3, net1, true) 
    test(net1, net4, false) 
    test(net4, net1, false) 
} 

func test(n1, n2 *net.IPNet, expect bool) { 
    result := intersect(n1, n2) 
    var label string 
    if result == expect { 
     label = "good" 
    } else { 
     label = "FAIL" 
    } 
    fmt.Printf("test intersect(%v,%v)=%v expected=%v => %s\n", n1, n2, result, expect, label) 
} 

func intersect(n1, n2 *net.IPNet) bool { 
    return false // FIXME WRITEME 
}