package thousands import ( "fmt" "strings" ) func Separate(Number interface{}, language ...string) (string, error) { switch Number.(type) { case int: case int8: case int16: case int32: case int64: case float32: case float64: default: return "", fmt.Errorf("no valid number format") } formattedNumber := fmt.Sprintf("%.2f", Number) if len(language) < 1 { language[0] = "en" } switch language[0] { case "de": formattedNumber = strings.ReplaceAll(formattedNumber, ",", ".") dec := "" if strings.Index(formattedNumber, ".") != -1 { dec = formattedNumber[strings.Index(formattedNumber, ".")+1 : len(formattedNumber)] formattedNumber = formattedNumber[0:strings.Index(formattedNumber, ".")] } for i := 0; i <= len(formattedNumber); i = i + 4 { a := formattedNumber[0 : len(formattedNumber)-i] b := formattedNumber[len(formattedNumber)-i : len(formattedNumber)] formattedNumber = a + "." + b } if formattedNumber[0:1] == "." { formattedNumber = formattedNumber[1:len(formattedNumber)] } if formattedNumber[len(formattedNumber)-1:len(formattedNumber)] == "." { formattedNumber = formattedNumber[0 : len(formattedNumber)-1] } if dec != "" { formattedNumber = formattedNumber + "," + dec } return formattedNumber, nil case "en": formattedNumber = strings.ReplaceAll(formattedNumber, ",", "") dec := "" if strings.Index(formattedNumber, ".") != -1 { dec = formattedNumber[strings.Index(formattedNumber, ".")+1 : len(formattedNumber)] formattedNumber = formattedNumber[0:strings.Index(formattedNumber, ".")] } for i := 0; i <= len(formattedNumber); i = i + 4 { a := formattedNumber[0 : len(formattedNumber)-i] b := formattedNumber[len(formattedNumber)-i : len(formattedNumber)] formattedNumber = a + "," + b } if formattedNumber[0:1] == "," { formattedNumber = formattedNumber[1:len(formattedNumber)] } if formattedNumber[len(formattedNumber)-1:len(formattedNumber)] == "," { formattedNumber = formattedNumber[0 : len(formattedNumber)-1] } if dec != "" { formattedNumber = formattedNumber + "." + dec } return formattedNumber, nil } return formattedNumber, nil }