可以使用正则表达式来检查这些数据是否符合要求。下面是一个示例代码,用于检测给定的数据结构中的字段是否满足条件:
import (
"fmt"
"regexp"
)
func isValidIPv4(ip string) bool {
// 正则表达式匹配 IPv4 地址
pattern := `^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$`
match, _ := regexp.MatchString(pattern, ip)
return match
}
func isValidIPv4Mask(mask string) bool {
// 检查掩码是否在 0~32 范围内
pattern := `^(?:[1-9]|[1-2][0-9]|3[0-2]|0)$`
match, _ := regexp.MatchString(pattern, mask)
return match
}
func checkDataValidity(data NetInfo) bool {
for _, addrInfo := range data.NetAddrInfo {
if !isValidIPv4(addrInfo.Ip4Addr) {
return false
}
if !isValidIPv4Mask(addrInfo.Ip4Mask) {
return false
}
if addrInfo.Ip4Gateway != "" && !isValidIPv4(addrInfo.Ip4Gateway) {
return false
}
}
for _, dns := range data.DNS {
if !isValidIPv4(dns) {
return false
}
}
return true
}
func main() {
requestBody := RequestBody{
RequestId: "12345",
OprType: "update",
Data: NetInfo{
NetAddrInfo: []NetAddrInfo{
{
Name: "eth0",
Ip4Addr: "192.168.1.100",
Ip4Mask: "24",
Ip4Gateway: "",
},
{
Name: "eth1",
Ip4Addr: "10.0.0.2",
Ip4Mask: "32",
Ip4Gateway: "10.0.0.1",
},
},
DNS: []string{"8.8.8.8", "invalid_ip", "192.168.0"},
},
}
valid := checkDataValidity(requestBody.Data)
fmt.Println("Data is valid:", valid)
}
此代码通过正则表达式匹配来检查 IPv4 地址的合法性和掩码是否在 0-32 范围内。你可以根据需要进行调整或添加其他条件检查。
内容由零声教学AI助手提供,问题来源于学员提问