如何检测两个Golang net.IPNet对象之间是否存在交集?
也就是说,如何检查 双方 是否第一网络子网中的第二个的 OR 如果第二网络是第一个子网。
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
}
在Go
Playground
上运行
如果(正如您的测试用例所暗示的那样)您不关心哪一面包含哪一面,而只是担心有重叠,则这足够了。
func intersect(n1, n2 *net.IPNet) bool {
return n2.Contains(n1.IP) || n1.Contains(n2.IP)
}
我有两个arraylist。employee类和user类的ArrayList。employee类将name、age、address作为字段。用户类将名称、年龄、地址作为字段。下面是两个列表 要检查用户是否和员工的地址相同。如果用户没有地址,则从员工处复制。
假设您有两个相同的对象(意味着它们分别具有相同的属性和相同的值)。 你如何测试平等性? 例
本文向大家介绍检查两个StringBuilder对象在C#中是否相等,包括了检查两个StringBuilder对象在C#中是否相等的使用技巧和注意事项,需要的朋友参考一下 要检查两个StringBuilder对象是否相等,代码如下- 示例 输出结果 这将产生以下输出- 示例 让我们看另一个例子- 输出结果 这将产生以下输出-
我有一个公司对象与不同的部门和员工。我已经成功地序列化了我的对象,并将它再次加载到我的程序中。 现在我想测试一下这两个对象在结构上是否相等。java是否为我提供了一个比较这些对象的工具? 我应该补充一点,我的对象有一个用其他对象填充的列表。 还是我必须为此编写自己的测试? 编辑: 现在我想比较一下t和t1,如果它们的值相同的话。
我有一个Java类,下面是一个示例:
问题内容: 在java中如何比较两个对象是否相等?何时使用equals和hashcode? 问题答案: 理论(针对语言律师和数学倾向者): (javadoc)必须定义一个等价关系(它必须是自反的,对称的和可传递的)。另外,它必须是一致的(如果未修改对象,则它必须保持返回相同的值)。此外,必须始终返回false。 (javadoc)也必须是一致的(如果未根据修改对象equals(),则它必须保持返回