Just a few functions for helping humanize times and sizes.
go get it as github.com/dustin/go-humanize, import it as
"github.com/dustin/go-humanize" for the original one, "github.com/yaguetto/go-humanize" for my forked version with dots, use it as humanize.
See godoc for complete documentation.
Dots for us from Brazil do not feel left out
1,000.00 -> 1.000,00
1,000,000,000.00 -> 1.000.000.000,00
-100,000.00 -> -100.000,00
Example:
fmt.Printf("You owe R$%s.\n", humanize.Dotf(6582491.69)) // You owe R$6.582.491,69This lets you take numbers like 82854982 and convert them to useful
strings like, 83 MB or 79 MiB (whichever you prefer).
Example:
fmt.Printf("That file is %s.", humanize.Bytes(82854982)) // That file is 83 MB.This lets you take a time.Time and spit it out in relative terms.
For example, 12 seconds ago or 3 days from now.
Example:
fmt.Printf("This was touched %s.", humanize.Time(someTimeInstance)) // This was touched 7 hours ago.Thanks to Kyle Lemons for the time implementation from an IRC conversation one day. It's pretty neat.
From a mailing list discussion where a user wanted to be able to label ordinals.
0 -> 0th
1 -> 1st
2 -> 2nd
3 -> 3rd
4 -> 4th
[...]
Example:
fmt.Printf("You're my %s best friend.", humanize.Ordinal(193)) // You are my 193rd best friend.Want to shove commas into numbers? Be my guest.
0 -> 0
100 -> 100
1000 -> 1,000
1000000000 -> 1,000,000,000
-100000 -> -100,000
Example:
fmt.Printf("You owe $%s.\n", humanize.Comma(6582491)) // You owe $6,582,491.Nicer float64 formatter that removes trailing zeros.
fmt.Printf("%f", 2.24) // 2.240000
fmt.Printf("%s", humanize.Ftoa(2.24)) // 2.24
fmt.Printf("%f", 2.0) // 2.000000
fmt.Printf("%s", humanize.Ftoa(2.0)) // 2Format numbers with SI notation.
Example:
humanize.SI(0.00000000223, "M") // 2.23 nMThe following functions are in the humanize/english subpackage.
Simple English pluralization
english.PluralWord(1, "object", "") // object
english.PluralWord(42, "object", "") // objects
english.PluralWord(2, "bus", "") // buses
english.PluralWord(99, "locus", "loci") // loci
english.Plural(1, "object", "") // 1 object
english.Plural(42, "object", "") // 42 objects
english.Plural(2, "bus", "") // 2 buses
english.Plural(99, "locus", "loci") // 99 lociFormat comma-separated words lists with conjuctions:
english.WordSeries([]string{"foo"}, "and") // foo
english.WordSeries([]string{"foo", "bar"}, "and") // foo and bar
english.WordSeries([]string{"foo", "bar", "baz"}, "and") // foo, bar and baz
english.OxfordWordSeries([]string{"foo", "bar", "baz"}, "and") // foo, bar, and baz