package main import ( "flag" "fmt" "math/rand/v2" "strings" ) func main() { onlyNum := flag.Bool("num", false, "generate only numbers (no formatting)") flag.Parse() cpf := generateCPF() if *onlyNum { fmt.Println(cpf) } else { fmt.Printf("%s.%s.%s-%s\n", cpf[:3], cpf[3:6], cpf[6:9], cpf[9:]) } } func generateCPF() string { digits := make([]int, 11) for i := range 9 { digits[i] = rand.IntN(10) } sum := 0 for i := range 9 { sum += digits[i] * (10 - i) } rem := sum % 11 if rem < 2 { digits[9] = 0 } else { digits[9] = 11 - rem } sum = 0 for i := range 10 { sum += digits[i] * (11 - i) } rem = sum % 11 if rem < 2 { digits[10] = 0 } else { digits[10] = 11 - rem } var result strings.Builder for _, d := range digits { fmt.Fprintf(&result, "%d", d) } return result.String() }