From daf6f51c0b5a974f7389989dcfa134c58e2bddab Mon Sep 17 00:00:00 2001 From: Kaushal Modi Date: Fri, 15 Dec 2017 11:58:37 -0500 Subject: [PATCH] Mention the significance of leading 0 in int fn string input https://discourse.gohugo.io/t/unable-to-cast-09-of-type-string-to-int/9614 --- content/functions/int.md | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/content/functions/int.md b/content/functions/int.md index 8f727b235..f5416c1dc 100644 --- a/content/functions/int.md +++ b/content/functions/int.md @@ -24,3 +24,28 @@ Useful for turning strings into numbers. ``` {{ int "123" }} → 123 ``` + +{{% note "Usage Note" %}} +If the input string is supposed to represent a decimal number, and if it has +leading 0's, then those 0's will have to be removed before passing the string +to the `int` function, else that string will be tried to be parsed as an octal +number representation. + +The [`strings.TrimLeft` function](/functions/strings.trimleft/) can be used for +this purpose. + +``` +{{ int ("0987" | strings.TrimLeft "0") }} +{{ int ("00987" | strings.TrimLeft "0") }} +``` + +**Explanation** + +The `int` function eventually calls the `ParseInt` function from the Go library +`strconv`. + +From its [documentation](https://golang.org/pkg/strconv/#ParseInt): + +> the base is implied by the string's prefix: base 16 for "0x", base 8 for "0", +> and base 10 otherwise. +{{% /note %}}