代码拉取完成,页面将自动刷新
package core
import "fmt"
type PortRange struct {
Min uint16
Max uint16
}
// Port and Ports, PortRange, 只能取其一(可以支持,但是感觉不必要)
type PortOption struct {
Port uint16 // single port mode
Range *PortRange //
List []uint16 //
}
func (a *PortOption) IsEmpty() bool {
return a.Port == 0 && a.Range == nil && len(a.List) == 0
}
// both a,b not nil
func (a *PortOption) Equal(b *PortOption) bool {
if a.Port != b.Port {
return false
}
if !EqualPortRange(a.Range, b.Range) {
return false
}
if !EqualSlice(a.List, b.List) {
return false
}
// 全空配置
// if a.Port == 0 && b.Port == 0 &&
// a.Range == nil && b.Range == nil &&
// len(a.List) == 0 && len(b.List) == 0 {
// return true
// }
return true
}
// both a,b not nil
func (a *PortRange) Equal(b *PortRange) bool {
return a.Min == b.Min && a.Max == b.Max
}
func EqualPortRange(a, b *PortRange) bool {
if a == nil && b == nil {
return true
}
return a != nil && b != nil && a.Equal(b)
}
func EqualPortOption(a, b *PortOption) bool {
if a == nil && b == nil {
return true
}
if a != nil && b != nil {
return a.Equal(b)
}
if a != nil {
return a.IsEmpty()
} else {
return b.IsEmpty()
}
}
// 10000:20000
func PortRangeToStr(portRange *PortRange) string {
return fmt.Sprintf("%d:%d", portRange.Min, portRange.Max)
}
// 10000X20000
func PortRangeToStrW(portRange *PortRange, splitter string) string {
return fmt.Sprintf("%d%s%d", portRange.Min, splitter, portRange.Max)
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。