# Doing add and subtract directly in Go templates

---
date: Oct 30, 2023
tags:
- GoLang
language: English
---

## Well, You Know

You know, this year happened way too much that I just realized I haven’t posted for a really long time. My last post is in Feburary, so O haven’t posted in over half a year! So I decided to post something today on solving some stupid things I encountered and figured out during my work: Pure arithmetic operations in Go templates.

## Calculations needed, but no access

During the work, I got something that I needed to craft a Go template to generate a report using a utility, but at the mean time I needed to perform some simple calculations during the process, so I went to check the official documentation, I realized there are no arithmetic operations in native Go Template. Normally, If you want to do something like this, what you will need to do is the following:

In this case, the output would be 2.

## addition and subtraction… with 1

So, what should I do to do that natively with Go template? After a quick search, I found this Stack Overflow solution; this solution enables adds and subtractions by one with limitations for a non-negative solutions:

• For addition, using `{{ len (printf "a%*s" \$number "") }}` to add by 1;
• For subtractionion, using `{{ len (slice (printf "%*s" \$number "") 1) }}` to subtraction by 1.

And this is how they works:

• For addition, this works by constructing a string with `\$number` of character `""` and add a single character `a` and then calculate the length;
• similarly, for subtraction, this works by constructing a string with `\$number` of character `""` and slicing the string with one letter, and then calculating the length.

• For addition: `{{ len (printf "%*s%*s" \$numbera "" \$numberb "") }}`
• For subtraction: `{{ len (slice (printf "%*s" \$numbera "") \$numberb) }}`