验证身份证的校验位
2020-03-29 本文已影响0人
CodingCode
验证身份证的第18位校验位是否有效:
func verifyID(id string) error {
if len(id) != 18 {
return fmt.Errorf("id must has length 18")
}
wi := []int {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2}
ai := []rune{'1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'};
sum := 0
for i:= 0; i<len(id) - 1; i++ {
sum += int(([]rune(id))[i] - '0') * wi[i]
}
if unicode.ToUpper(([]rune(id))[len(id) - 1]) != ai[sum % 11] {
return fmt.Errorf("id verifiy failure")
}
return nil
}